【发布时间】:2010-09-14 14:40:36
【问题描述】:
我对实体框架非常是新手,所以请多多包涵...
如何将来自不同上下文的两个对象关联在一起?
下面的例子抛出了以下异常:
System.InvalidOperationException: 两个对象之间的关系 无法定义,因为它们是 附加到不同的 ObjectContext 对象。
void MyFunction()
{
using (TCPSEntities model = new TCPSEntities())
{
EmployeeRoles er = model.EmployeeRoles.First(p=>p.EmployeeId == 123);
er.Roles = GetDefaultRole();
model.SaveChanges();
}
}
private static Roles GetDefaultRole()
{
Roles r = null;
using (TCPSEntities model = new TCPSEntities())
{
r = model.Roles.First(p => p.RoleId == 1);
}
return r;
}
使用一个上下文不是一种选择,因为我们在 ASP.NET 应用程序中使用 EF。
【问题讨论】:
-
为什么将数据上下文类型命名为
TCPSEntities,为什么将数据上下文对象命名为model?您可能会考虑不使用new,而是将预先构造的数据上下文或数据上下文工厂传递给函数。您可能还考虑使用Enumerable.SingleOrDefault而不是Enumerable.First。
标签: c# .net entity-framework