为什么EF DataBase First不使用getdate()?

Roc*_*oke 5 entity-framework ef-database-first

我首先使用EF 4.1和数据库.

示例表:

CREATE TABLE dbo.Product(
   [ID] [int] IDENTITY(1,1) not null,
   Title nvarchar(200) not null,
   CreateDate datetime not null default(getdate()),
)
Run Code Online (Sandbox Code Playgroud)

当我添加一个新行时,我得到一个关于DateTime类型溢出的异常.

getdate()数据库的设置是无效的.

我必须将字段的storeGeneatePattern属性设置createdateComputed.

有没有办法让EF自动生成DateTime列而无需手动设置?

Lad*_*nka 5

没有EF永远不会使用您的数据库默认值.原因是您的实体具有不可为空的DateTime财产.默认情况下,此属性在.NET中分配的默认值为1.1.0001.EF不知道您是否分配了该值,或者它是否为默认值,因此它始终将此值显式传递给数据库.如果使用可空类型也会发生相同的情况,但在这种情况下,EF将显式传递null.在这两种情况下,都不会应用来自数据库的默认值,因为仅当应用程序中的值未在insert命令中显式传递时才应用该值 - EF显式传递来自实体的所有值.