EF在更新中缺少where子句

时间:2016-08-16 06:49:59

标签: c# .net entity-framework entity-framework-6

var row = DataContext.TableA.FirstOrDefault(x => x.Col1 == "foo" && x.Col2 == "bar");
row.Col3 = "xyz";
DataContext.SaveChanges()

我预计Col3="xyz"仅针对Col1="foo" and Col2="bar"进行更新。但它更新了我预期的更多行。当我记录查询时,EF生成的查询似乎完全缺少Col2。知道为什么吗?

UPDATE [dbo].[TableA]
SET [Col3] = @0
WHERE ([Col1] = @1)

-- @0: 'xyz' (Type = String)

-- @1: 'foo' (Type = String)

1 个答案:

答案 0 :(得分:3)

使用 Fluent API 指定复合主键时,必须使用new关键字创建匿名类型。

HasKey(m => new { m.Col1, m.Col2 });