あなたはPKの一部として、すべての列をマークしません追跡モードで実体を読むことができます:
var data = db.TheTable.Where(...).AsNoTracking().ToList();
あなたが同じ値を持つ新しい行を追加する必要がある場合 - あなたはすでにあなたの中に同じ行を持っていない限り、これはOKですデータベースコンテキスト。 No Trackingモードでは、と同じ値を持つ2つのローを追加した場合にのみ、これが発生します。
回避策:SaveChangesメソッドの後にエンティティを切り離し、別々の操作で行を追加します。
var row = ...;
db.TheTable.Add(row);
db.SaveChanges();
db.Entry(row).State = EntityState.Detached;
// now you can add the row again
をあなたは人跡未踏の行を削除する必要がある場合 - あなたはそれを最初に添付する必要があります。
var row = ...;
db.TheTable.Attach(row);
db.TheTable.Remove(row);
db.SaveChanges();
db.Entry(row).State = EntityState.Detached;
それともできる手動変更行の状態:
var row = ...;
db.Entry(row).State = EntityState.Deleted;
db.SaveChanges();
db.Entry(row).State = EntityState.Detached;
しかし、私はたくさんの行が削除されますわからない重複して行を削除しようとすると。
JFYIあなたのプロフィールはあなたが[upvote](http://stackoverflow.com/help/privileges/vote-up)へのあなたの特権をまだ使用していないことを示しています。あなたは便利な答えと質問をupvoteすることができます。また、[承諾する](http://meta.stackexchange.com/a/5235/308647)回答を受け入れると、受け入れられた回答をアップヴォートするのが合理的です。 –