2

私は場所を持っています - 関連タグ付き:

場所モデルを持っています:

public virtual int PlaceID { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
public virtual string Name { get; set; }

および関連するタグ モデル:

public virtual int TagID { get; set; }
public virtual string Name { get; set; }
public virtual string NamePlural { get; set; }
public virtual ICollection<Place> Places { get; set; }

多対多の関係。

たとえば、場所には「バー」と「カフェ」のタグを付けることができます。(そして、多くの場所にもこれらのタグがある可能性があります)。

関連するタグが付いた場所を追加できます。しかし、Linq で場所に関連するタグを操作するにはどうすればよいでしょうか? (追加/削除/編集)。

また、関連するタグを付けて場所モデルを保存しようとすると、場所は更新されますがタグは更新されません。どうすればこれを行うことができますか?

place.Tags = SelectedTags
db.Entry(ptvm.place).State = EntityState.Modified;
db.SaveChanges();

ありがとう。

4

1 に答える 1

3

何を、なぜ行っているかを知っている場合にのみ、エンティティのエンティティ状態でマイクロ管理を使用する必要があります。

この場合、エンティティ フレームワークに制御を渡す必要があります。

        db.Places.Attach(place);
        context.Entry(place).Collection(p => p.Tags).Load();

        foreach(var tag in SelectedTags)
        {
            place.Tags.Add(tag);
        }            
        db.SaveChanges();

追記: ナビゲーション プロパティICollectionを新しいコレクションに変更することはできません。追加、削除、クリアのみ可能です。このコレクションを削除またはクリアする場合は、事前にデータベースからロードする必要があります。

于 2013-06-06T05:13:17.043 に答える