ここにいる皆さんが前回大きな助けになったので、私は戻ってきました。基本的な前提は次のとおりです。MVC同じ親エンティティの複数のコレクション
人は他の人よりも責任を持つことができます。
私はこのようなエンティティを定義している:私は人に責任を追加するとき
public class Person
{
public int PersonId { get; set; }
public string Name { get; set; }
public virtual ICollection<Responsibility> Responsibilities { get; set; }
}
public class Responsibility
{
public int ResponsibilityId { get; set; }
public string ResponsibilityType { get; set; }
public virtual ICollection<Person> People { get; set; }
}
はしかし、私は人に責任を追加するとき、彼らは自分たちの上に責任をもって終わる、でも人々に空であります。
Iが人物Bのための人物Aに責任を追加する場合も、その人物Bが人物Aの責任を有するものとして現れる:
人物A - 人物Aのための責任、人物B 人物B - 責務人B、人Aの場合
私が間違っていることは何ですか?
UPDATE
このDB
// 7. Responsability (Line Manager)
List<Person> people = new List<Person>();
people.Add(personB);
var responsibility = new Responsibility() { Type = ResponsibilityType.LineManager, People = people };
List<Responsibility> responsibilities = new List<Responsibility>();
responsibilities.Add(responsibility);
// 7.1 Assign to Person A
personA.Responsibilities = responsibilities;
db.SaveChanges();
へ私の割り当ては、まだペルソナ上LineManger人物Bおよび人物Bペルソナ上LineManagerを有するPersonB
最新の更新を有する個人をもたらすさ
私はdb.SaveChanges()を呼び出すときに問題があると思われます。その前にはまったく正しいためです。 :(
これは、エンティティのナビゲーションプロパティに依存します。それを次のように考えてみましょう。PersonにResponsibiliyを追加すると、現在PersonからResponsibilityに、またはResposibilityからPersonに移動できます。人には責任のコレクションがあり、責任には人の集まりがあります。現在のところ、これは "人"の別のタイプであるとは言いません。 PersonTypeを追加して(恐らくenum)、ナビゲーションを修正してPeople-> Resp-> RespPeopleに行くことができます。これはうまくいくはずです。 – BlueChippy
POCO(記載されているプレーンな古いclrオブジェクト)またはEntity Frameworkを使用していますか? – BlueChippy
Idプロパティとその値をDBから取得します。私の推測では、その設定されていない(したがって、それはintのデフォルト値は0)か、すべて同じものに設定されています。 – BlueChippy