2016-08-16 14 views
3
var row = DataContext.TableA.FirstOrDefault(x => x.Col1 == "foo" && x.Col2 == "bar"); 
row.Col3 = "xyz"; 
DataContext.SaveChanges() 

私はCol1="foo" and Col2="bar"のためだけに更新されます。Col3="xyz"しかし、それは私が期待した行をさらに更新しました。クエリをログに記録すると、EFで生成されたクエリは、完全にCol2が見つからないようです。どんな考え?更新のwhere句が欠落しているEF

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

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

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

「TableA」のPKとは何ですか? –

+0

これは 'Col1'と' Col2'の複合です。 – Nemo

+0

コードを先に使用していますか?エンティティを正しくマップしたことはありますか? –

答えて

3

匿名型を作成するnewキーワードを使用する必要があります複合主キーを指定する流暢APIを使用。

HasKey(m => new { m.Col1, m.Col2 }); 
関連する問題