エンティティフレームワークを使用して作成する2つのモデルクラスがあります。スキルとアクティビティです。以下は、各の定義は以下のとおりです。エンティティフレームワーク(C#ASP.NET) - 非依存エンティティでのトラッキングのないアソシエーションエンティティ
Skill.cs
public class Skill
{
public int Id { get; set; }
public String Name { get; set; }
}
Activity.cs
public class Activity
{
public int Id { get; set; }
public String Name { get; set; }
public virtual List<Skill> RequiredSkills { get; set; }
}
理想的には、データベースに、私は活動が外部キーを介して連結されたことにしたいと思います(SkillActivityAssocなど)とSkillとの間で何もする必要はありません。どの活動にあるスキルが必要かを追跡する必要はありません。私は、各アクティビティにどのようなスキルが必要であるかを追跡するだけで、スキルクラスにリストがない理由を説明する必要があります。私はそれが理にかなったことを望む。
私の質問です:これは正しいことですか?アクティビティのRequiredSkillsプロパティを更新すると、
activity.RequiredSkills = someInstanceOfRequiredSkillsList;
dbcontext.Entry(activity).State = EntityState.modified;
dbcontext.SaveChanges();
..のように動作しません。私は、既に関連エンティティを更新できないため、それが原因だと推測しています。さらに、私の現在の実装はスキルクラスのvirtual List<Activity>
プロパティを持っています。これは取り除きたいものです。モデルデザインを変更するにはどうしたらいいですか?それに応じてRequiredSkills
を更新するにはどうすればよいですか?
ありがとうございます!
ありがとうございました。しかし、それを使用するアクティビティへの参照を持たないスキルと多対多の関係を作成することは可能ですか?つまり、アクティビティにはスキルのナビゲーションプロパティがありますが、スキルはリンクされたアクティビティを追跡していません。 – Vandenn
はい、あなたが持つことができます。 EFのコレクションプロパティはナビゲーションプロパティです。詳細はこちらhttps://stackoverflow.com/questions/16718699/map-many-to-many-relationship-without-navigation-propertyおよびMSDNのドキュメント:https://msdn.microsoft.com/en- us/library/jj713564(v = 117).aspx –
もう一度あなたの答えをありがとう! :) – Vandenn