我正在创建以下存储库方法: -
public AccountDefinition GetCustomer(int id)
{
var c = entities.AccountDefinitions.Where(p => p.ORG_ID == id)
.Include(a => a.SDOrganization)
.Include(a2 => a2.SiteDefinitions)
.Include(a3 => a3.SDOrganization.AaaPostalAddresses)
.Include(a4 =>
a4.SiteDefinitions
.Select(a5 =>
a5.DepartmentDefinitions
.Select(a6 => a6.SDUsers
.Select(a7 => a7.AaaUser.AaaContactInfoes)
)
)
)
.SingleOrDefault();
return c;
}
我有以下Action方法,它将调用上面的存储库方法: -
public ActionResult Details2(int id = 0)
{
// CustomerDetails cd = repository.GetCustomer(id);
AccountDefinition cd = repository.GetCustomer2(id);
return View("copy",cd);
}
但我对实体框架如何获取数据并构建View模型对象感到担忧。
.include
让我们说当实体框架正在构建数据时,刚刚添加了一条新记录,例如: -
.Include(a => a.SDOrganization)
后,新SDOrganization
AssPostalADDress
刚刚添加所以可能会发生这种情况或EF会处理这个问题吗?
答案 0 :(得分:0)
这里没有之前或之后。 EF读取所有包含和所有内容并构建查询表达式。
当您在该表达式上调用SingleOrDefault()
时,该表达式将转换为SQL并在数据库中立即执行。
您要求的是事务隔离级别 - 您在并发环境中从SQL Server获取的数据:请参阅此链接以获取有关该主题的介绍:http://msdn.microsoft.com/en-us/library/ms378149.aspx