好的,我打算使用Entity Framework开发一个项目。虽然我在开始实施之前尝试做一些R& D,但我发现了这个问题,希望你们中的一些人帮我找到解决方案。
我有一个名为'Person'的实体,引用了'Members'实体,具有一对多(1:N)的关系。任务是查询Person实体及其相应的Members集合,并将其传递给表示层以查看,修改或删除它,然后将修改后的实体对象传递回Model层以将实体附加到上下文并将其保存到DB。
据我分离/附上w.r.t.像'Person'这样的单个实体并将其保存到DB中,每件事都可以正常工作。 但是,当我尝试使用其引用的实体(成员)查询实体(Person)并分离以便我可以将其发送到表示层。我发现只有Person实体集合,并且从上下文中删除引用的成员实体集合后才会完全删除。
我在这里粘贴我的代码片段以供参考:
using (GOLProfessionalEntities context = new GOLProfessionalEntities())
{
ObjectQuery<Person> query =
context.Person.Include("Members");
var person = query.First();
context.Detach(person);
return person;
}
如果有人提出解决方案,我会非常高兴。
提前致谢。 -ssak32
答案 0 :(得分:2)
您可以将ObjectQuery上的MergeOption设置为NoTracking。这样,Person就不会首先附加到ObjectContext。
using (GOLProfessionalEntities context = new GOLProfessionalEntities())
{
ObjectQuery<Person> query =
context.Person.Include("Members");
query.MergeOption = MergeOption.NoTracking;// <--
var person = query.First();
return person;
}
我这么晚才得到答案,这可能有助于某人。
答案 1 :(得分:0)
我认为你还需要分离每个成员:
使用(GOLProfessionalEntities context = new GOLProfessionalEntities()) { ObjectQuery query = context.Person.Include( “成员”);
var person = query.First();
while (person.Member.Count > 0)
{
context.Detach(person.Member.First());
}
context.Detach(person);
return person;
}
我希望有效。