【问题标题】:C# Model context has changedC# 模型上下文已更改
【发布时间】: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


【解决方案1】:

我不知道为什么,但是从 EF 6.0 升级到更高版本的 6.1.2 时它可以工作 显然,6.1.0 和这混淆 EF 的所有其他项目

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-30
    • 2013-08-24
    • 1970-01-01
    • 2015-04-29
    • 2012-07-04
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多