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)
答案 0 :(得分:3)
使用 Fluent API 指定复合主键时,必须使用new
关键字创建匿名类型。
HasKey(m => new { m.Col1, m.Col2 });