我正在使用 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。(如果声明通过)
然后,当调用 SaveChanges 时,我得到查询(使用 sql profiler),它更新了 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?
我错过了什么?请帮忙!