好的,因爲上次在這裏的每個人都有很大的幫助,所以我回來了。基本前提是: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; }
}
然而,當我添加有責任的人,他們最終與責任在自己,甚至在人們爲空時,我的責任添加到人。
另外,如果我添加責任人,一種用於人B,然後人員B顯示爲具有用於個人A一責任:
人A - 爲人物A,人物乙 人員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過的人物的人物和具有LineManager過的人物和PersonB
最新的更新
某乙和某乙當我調用db.SaveChanges()時似乎是個問題,因爲在此之前它是完全正確的。 :(
認爲這是下跌對實體您的導航性能。可以這樣想:當你將一個責任添加到一個人時,你現在可以從個人到責任或從Respibility到個人。一個人有責任的收集和責任有一個人的集合。目前沒有什麼可以說這是一種不同類型的「人」。添加一個PersonType(可能是enum),然後修改你的導航,這樣你就可以去People-> Resp-> RespPeople。這應該工作。 – BlueChippy 2011-12-20 09:25:44
您使用POCO(列出的普通舊clr對象)還是實體框架? – BlueChippy 2011-12-20 10:26:02
檢查您的Id屬性以及它從數據庫獲得的值。我的猜測是它沒有被設置(因此它是int默認爲0),或者被設置爲相同的一切。 – BlueChippy 2011-12-20 11:17:54