0

編集:

modelbinder にバインドされているオブジェクトを変更したため、変更が反映されないという問題が見つかりました。その場合、コンテキストによって追跡されません。

こんにちは

アプリケーションの仮想 ICollection に問題があります。エンティティに加えた変更を EF が自動的に保存するのは正しいですか? * *

たとえば、アイテムをリストに追加する (プレーヤーをチームに追加する) 場合、データベースに保存するためにリポジトリと dbset を使用しなくても機能しますか?

私はこのようなものを持っています

    public int RayonId { get; set; }
    public String Rayonnaam { get; set; }
    public virtual ICollection<Duivenmelker> Duivenmelkers { get; set; }

    public Rayon()
    {
           Duivenmelkers = new List<Duivenmelker>();

    }      


    public void AddMelker(Duivenmelker m)

    {
        Duivenmelkers.Add(m);
    }

上記のコードは、List をローカルでのみ変更します。しかし、変更をデータベースに保存しません。リポジトリを呼び出して新しいオブジェクトをデータベースに直接追加できますが、それは私が考える良い方法ではありません。

これが機能しない原因は何が間違っている可能性がありますか? * *

savechanges は 0 を返します (変更はないと考えられます)

今追加しました

            c.Vluchten.Attach(v);
            c.Entry(v).State = EntityState.Added;

これは明らかに機能しますが、明示的に彼に伝えずにEFが変更を認識しない理由はまだわかりません

4

2 に答える 2

1

モデルバインダーからバインドされたオブジェクトを使用せず、代わりにコンテキストにアタッチされたオブジェクトを検索し、そこで変更を加えます。(バインドされたオブジェクトはEntityChangetrackerによって追跡されません)

于 2012-06-30T16:59:16.380 に答える
0

あなたは電話する必要がありますSaveChanges()

于 2012-06-29T15:40:06.573 に答える