gpt4 book ai didi

entity-framework - EF6 模型优先 - 实体类型不是当前上下文模型的一部分

转载 作者:行者123 更新时间:2023-12-05 07:54:56 26 4
gpt4 key购买 nike

我知道有关此问题的问题已被问过数十次(我已全部阅读),但我仍然没有解决方案。大多数处理代码优先设计可能发生的问题,但我正在做模型优先。

我熟悉 EF,并且在我的解决方案中有其他工作模型。

  • WPF(网络 4.5)
  • Entity Framework 6.1.3 - 模型优先
  • Visual Studio 2013

问题:

我上下文中的每个 DbSet<> 在被访问时都会抛出以下错误:

“类型为‘System.InvalidOperationException’的异常发生在 EntityFramework.dll 中,但未在用户代码中处理

附加信息:实体类型 xxx 不是当前上下文模型的一部分。"

我是如何创建模型的:

  1. 新项目
  2. 添加 edmx - 首先包含表模型
  3. 使实体继承自实现 INotifyPropertyChanged 的​​基类
  4. 删除了基类并修改了 .tt 文件,以便实体改为实现 INotifyPropertyChanged
  5. (删除所有内容并从头开始重试)

连接字符串:

<add name="Stratus_X_TestEntities" connectionString="metadata=res://*/PartsServiceModel.csdl|res://*/PartsServiceModel.ssdl|res://*/PartsServiceModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=Stratus;initial catalog=StratusX;persist security info=True;user id=user;password=password;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

此连接字符串与我的解决方案中来自不同(并且有效!).edmx 的连接字符串相同。

用法:

using (var ObjectContext = new TestEntities())
{
return ObjectContext.AccountingType.ToList();
}

TestEntities 是 DbContext。任何访问 ObjectContext.AccountingType 或任何其他 DbSet<> 的尝试都会导致错误。

我检查过的东西:

  • 连接字符串(模型优先 - 见上文)
  • 实体映射正确吗?是的
  • 实体类型的多个实例或生成 - 否
  • 是从基类继承的实体导致了错误吗?不,我删除了基类并使 .tt 文件直接在实体中生成 INotifyPropertyChanged 实现。错误仍然存​​在!
  • 查看模型/实体图 (*.edmx)。右键单击有问题的表,然后进行验证。
  • 阅读每个类似的 SO 问题以获取想法
  • 在测试解决方案中复制项目:它在单独的解决方案中工作!
  • 将测试项目移至工作解决方案:同样的错误!

谁能想出其他可以尝试/检查的东西吗?

谢谢

最佳答案

如果一切正常,只需从 edmx 中删除对象并重新添加。不知何故,EF 内部失去了一些连接。这样做解决了我的问题

关于entity-framework - EF6 模型优先 - 实体类型不是当前上下文模型的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30740646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com