1

EFCFを使用して多層アプリを開発しています。私はこの方法で切り離されたエンティティを削除することができました:

       public void Delete(DbSet MySet, object Obj)
        {
            MySet.Attach(Obj);
            var Entry = this.Entry(Obj);
            Entry.State = EntityState.Deleted;
            this.SaveChanges();
        }

このメソッドは、Adapter:DbContextというクラスで定義されています。問題は、更新時に同様のコードが機能しないことです。

 public void Update(DbSet MySet, object Obj)             
    {
        MySet.Attach(Obj);
        var Entry = this.Entry(Obj);
        Entry.State = EntityState.Modified;
        this.SaveChanges();
    }

これはデータベースを更新せず、例外もスローしません。デタッチされたエンティティを更新するにはどうすればよいですか?

4

2 に答える 2

2

オブジェクトをアタッチする代わりに、オブジェクトを取得して更新してみてください-注:IDはObj.Idであると想定しています

public void Update(DbSet MySet, object Obj)             
    {
        var objToUpdate = MySet.Find(Obj.Id);
        if (objToUpdate != null)
        {
        var Entry = this.Entry(objToUpdate );
        Entry.CurrentValues.SetValues(Obj)
        Entry.State = EntityState.Modified;
        this.SaveChanges();
        }
    }
于 2012-10-14T04:23:23.947 に答える
0

このコードは問題なく動作します。エラーは別の場所にありました。時期尚早の質問でごめんなさい!とにかく便利なので削除しません

于 2012-10-14T04:35:24.980 に答える