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

Posted

技术标签:

【中文标题】EF6 模型优先 - 实体类型不是当前上下文模型的一部分【英文标题】:EF6 model first - The entity type is not part of the model for the current context 【发布时间】:2015-08-24 18:41:42 【问题描述】:

我知道关于这个问题的问题已经被问了几十次(我已经全部阅读了),但我仍然没有解决办法。 大多数处理代码优先设计可能发生的问题,但我正在做模型优先。

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

WPF(净 4.5) 实体框架 6.1.3 - 模型优先 Visual Studio 2013

问题

Every DbSet 在我的上下文中被访问时抛出以下错误:

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

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

我是如何创建模型的:

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

连接字符串:

<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 问题以获取想法 在测试解决方案中复制项目:它在单独的解决方案中工作! 将测试项目移入工作解决方案:同样的错误!

谁能想到其他可以尝试/检查的方法?

谢谢

【问题讨论】:

您的连接字符串是否具有正确的 ssdl/mdl/csdl 文件名?尝试清洗溶液? 非常感谢!我没有意识到 ssdl/mdl/csdl 位是不同的。我有两个模型连接到同一个数据库,所以它们自然而然地具有相同的名称。我必须重命名一个并确保它们都在我的主 App.Config 文件中,现在它可以正常工作了! 【参考方案1】:

如果一切看起来都不错,只需从 edmx 中删除该对象并重新添加。不知何故,EF在内部失去了一些联系。这样做解决了我的问题

【讨论】:

【参考方案2】:

我也是 EF 和 .NET 的新手,但我认为默认情况下 EF 会搜索 与上下文的类名同名的连接字符串,所以,可能是, 如果您将连接字符串名称更改为“TestEntities”,它可能会成功。

【讨论】:

以上是关于EF6 模型优先 - 实体类型不是当前上下文模型的一部分的主要内容,如果未能解决你的问题,请参考以下文章

实体类型 <class> 不是当前上下文模型的一部分

实体类型 [class] 不是当前上下文模型的一部分

实体类型 ApplicationUser 不是当前上下文模型的一部分

为啥我收到错误实体类型 LAB_INVOICE_VIEW 不是当前上下文模型的一部分。?

EF6:代码优先复杂类型

实体类型 IdentityRole 不是当前上下文 Asp.net mvc 模型的一部分