在我的数据库中,有一个日期时间列“已创建”,默认值为getutcdate()
。我希望我的EF datacontext生成一个不设置此列的插入查询,并获取结果值。有没有办法做到这一点?
我尝试将StoreGeneratedPattern设置为None,Identity或Computed,我得到一个例外,即DateTime无法转换为datetime2(意味着它试图在0-0-0插入0:00)
如何设置edmx以允许在不指定初始Created值的情况下创建对象?
答案 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日期格式允许的最小值,则应该会收到不同的错误。看起来你的映射只是映射到错误的模式。