【发布时间】:2015-02-05 05:46:53
【问题描述】:
我有一个解决方案 FooHQ,其中包含:
FooModel - 代码优先
FooService - 使用 FooModel 的服务
FooWebsite - 使用 FooService 和 FooModel 的网站
一切正常!
我刚刚创建了一个 FooWebsiteAgain
我参考了 FooService 和 FooModel 和 whamoo.....
支持“FOOContext”上下文的模型自数据库创建以来发生了变化。考虑使用 Code First 迁移来更新数据库 (http://go.microsoft.com/fwlink/?LinkId=238269)
有趣的是,如果我在调试器中单步执行并强制它导航 UnitOfWork 上下文并四处浏览......
using (UnitOfWork unitOfWork = new UnitOfWork()) <<Debug here
{
var Customer = unitOfWork.CustomerRepository.GetCustomerByTN(TN);
return Customer;
}
...它醒来并且没有错误!
请问有什么想法吗?
PS 我使用的是 EF 6.0.0
【问题讨论】:
-
当您在调试器中“浏览”时,您是否真的激活了查询?
-
child 无法在结果视图中显示@GertArnold,但它确实可以作为下一行中的代码工作......请参阅上面的 Customer 已填充。
-
您的上下文在哪里,特别是您在哪些项目中启用了迁移?如果您要在多个项目之间共享一个实体,那么该实体应该只在一个项目中进行跟踪,或者甚至在一个完全独立的项目中专门用于该目的,也许是一个类库。如果你有多个上下文引用同一个实体类,那么每个都需要单独迁移,如果数据库相同,这当然是不可能的。
-
@ChrisPratt 上下文与迁移一起也在模型中,工作单元只是派生上下文。
-
嗯?您的意思是上下文与模型在同一个文件中定义?这并不重要,尽管它至少表明他们都在同一个项目中,我猜。但是,请确保您的其他项目中没有任何其他可能引用同一实体的上下文。用于控制器之类的 Visual Studio 生成器有一个为您创建上下文/DbSet 的坏习惯,即使您不需要或不需要它们。
标签: c# asp.net-mvc entity-framework ef-code-first unit-of-work