我使用的EntityFramework 4.我现在面临奇怪的问题与实体框架,这里是代码:实体框架产生不适当的查询
public void UpdateLink(Link link)
{
Link existing = ObjectContext
.Link
.FirstOrDefault(p => p.ItemLeft == link.ItemLeft
&& p.ItemRight == link.ItemRight
&& p.DeleteTime == null);
if (existing != null)
{
existing.DeleteTime = link.DeleteTime;
}
ObjectContext.SaveChanges();
}
比方说,现有的项目被发现,DeleteTime设置为这个项目。 (if语句传递)
然后,当调用SaveChanges我得到的查询(与SQL事件探查器)至极更新所有的记录,其中ItemLeft是X和ItemRight是Y.事实上它忽略DeleteTime = NULL条件...
貌似是:
exec sp_executesql N'update [Link] set [DeleteTime] = @0
where (([ItemLeft] = @1) and ([ItemRight] = @2))
',N'@0 datetime,@1 int,@2 int',@0='2013-04-23 14:58:21.853',@1=857,@2=872
表结构:
ID [PK]
(index)LeftItem int
(index)RightItem int
(index)DeleteTime datetime?
我缺少什么?请帮忙!
“DeleteTime”的类型是什么? – 2013-04-23 12:20:03
你能分享这个生成的查询吗? – Pako 2013-04-23 12:20:08
DeleteTime可以为空DateTime(DateTime?) – Andrei 2013-04-23 12:21:51