3

一个简单的情况,却想不出简单的解决办法。
我的 MSSQL DB 中有一张表(简化版):
tbUsers

[ID] [int] IDENTITY(1,1) NOT NULL,
[FirstName] [nvarchar](25) NOT NULL,
[DateCreated] [datetime2](7) NOT NULL default GETDATE()

我有一个从数据库生成的实体框架模型,它为我创建了一个用户 POCO 类。
我想要实现的是,当像这样使用我的数据库上下文时

db.Users.Add(new User { Name = "Rony" });  
db.SaveChanges();

它将创建一个将DateCreated设置为当前日期和时间的行。现在发生的情况是,当User创建对象时,DateCreated属性默认为DateTime.MinValue,然后数据库中的行也具有此值。

我猜执行的查询是:

INSERT INTO dbo.tbUsers
       ([Name]
       ,[DateCreated])
VALUES
       (''
       ,'0001-01-01 00:00:00.0000000')

但应该是:

INSERT INTO dbo.tbUsers
       ([Name])
VALUES
       ('')

对实现这一目标的任何帮助将不胜感激。

4

1 回答 1

2

如果您的数据库负责设置字段,请将属性注释为Computed,例如

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]

这也可以在 EF 设计器中对该字段的属性进行设置。

于 2013-05-28T15:38:37.683 回答