我使用的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