5

我首先使用带有数据库的 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()),
)

添加新行时,出现有关 DateTime 类型溢出的异常。

getdate()数据库设置无效。

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

有什么方法可以让EF自动生成DateTime列而不需要手动设置??

4

2 回答 2

5

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

于 2012-04-24T07:59:01.767 回答
1

您可以在Product实体类构造函数中执行此操作,

public class Product{
  public Product(){
     CreateDate =DateTime.Now;
  }
}
于 2012-04-24T05:32:30.717 回答