好的,因为上次在这里的每个人都有很大的帮助,所以我回来了。基本前提是: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