2

Entity Framework を使用しています。私はlinqから結果を取得しようとしており、その結果を削除しようとしています:

    IEnumerable<tblAVAL> tblval = db.tblVALs.Where(p => p.PgrID == prid);
    db.DeleteObject(tblval);
    db.SaveChanges(); 

tblvalコレクションを返すことに注意してください。ただし、次のメッセージが表示されます。

ObjectStateManager で見つからなかったため、オブジェクトを削除できません。

次のようにすると動作します:

    tblAVAL tblval = db.tblVALs.First(p => p.PgrID == prid);
    db.DeleteObject(tblval);
    db.SaveChanges(); 

複数の行が返されるコレクションで削除するにはどうすればよいですか?

4

1 に答える 1

1

コレクションを DeleteObject メソッドに渡すと、エンティティであるため、コレクション オブジェクトをマップしようとします。あなたがする必要があるのは、コレクションを繰り返してアイテムを削除することです。

foreach( var tblav in db.tblVALs.Where(p => p.PgrID == prid))
    db.DeleteObject(tblav);

db.SaveChanges(); 

EntityFramwork は、一括削除、更新、および挿入をサポートしていません。http://magiq.codeplex.comには、Linq-to-Sql と EntityFramework の実装がありますが、すべての機能はありません。たぶん、何があなたのニーズに合っているのでしょう。

于 2012-06-13T18:15:07.683 に答える