默认值DateTime列,使用EF4进行映射

时间:2009-12-15 09:55:30

标签: entity-framework linq-to-entities .net-4.0

在我的数据库中,有一个日期时间列“已创建”,默认值为getutcdate()。我希望我的EF datacontext生成一个不设置此列的插入查询,并获取结果值。有没有办法做到这一点?

我尝试将StoreGeneratedPattern设置为None,Identity或Computed,我得到一个例外,即DateTime无法转换为datetime2(意味着它试图在0-0-0插入0:00)

如何设置edmx以允许在不指定初始Created值的情况下创建对象?

1 个答案:

答案 0 :(得分:0)

在我的机器上工作。刚尝试了这个,在我的模型中添加了一个名为“Property”(默认名称)的属性,将列设置为Nullable:false,StoreGeneratedPattern:computed:

以下是我刚试过的示例生成的sql:

insert [dbo].[Foods]
      ([CommonName],
       [ScientificName],
       [ShortDescription],
       [CategoryId],
       [LongDescription])
values('sdfg' /* @0 */,
       'sdfg' /* @1 */,
       'sdfg' /* @2 */,
       1 /* @3 */,
       'sdfg' /* @4 */)
select [Id],
       [Property]
from   [dbo].[Foods]
where  @@ROWCOUNT > 0
       and [Id] = scope_identity()

EF4甚至知道如何在插入后再读取Property属性。

修改:您有这个问题吗: The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value

我知道你听到的异常是错误的。如果日期时间字符串低于sql日期格式允许的最小值,则应该会收到不同的错误。看起来你的映射只是映射到错误的模式。