指定的 EntityFramework 架构无效

Posted

技术标签:

【中文标题】指定的 EntityFramework 架构无效【英文标题】:EntityFramework Schema specified is not valid 【发布时间】:2015-12-07 17:49:18 【问题描述】:

我知道已经有人问过这个问题,但我的情况似乎略有不同。我尝试了“运行自定义工具”,但奇怪的事情发生在这里:因为我有 2 个相关的数据库(所以有 2 个相关的模型)。如果我在一个模型上运行自定义工具,它会搞砸另一个模型,反之亦然(不完整的 .cs 文件、丢失等)。有谁知道我哪里出错了?

编辑:

完整的错误:

“System.Data.Entity.Core.MetadataException”类型的异常 发生在 EntityFramework.dll 中,但未在用户代码中处理

附加信息:指定的架构无效。错误:

关系 'ProductionMasterDataEntityModel.FK_ProductGroup_CostPeriods' 不是 加载是因为类型“ProductionMasterDataEntityModel.ProductGroup” 不可用。

以下信息可能有助于解决以前的问题 错误:

类型上不存在所需的属性“CstAveOrderQty” 'SISCOM.Persistance.Models.ProductGroup'。

自定义工具为:TextTemplatingFileGenerator

我不确定它是否与 asp.net 框架有关,但它是一个 asp.net 项目,所以我认为值得一提。

【问题讨论】:

工具是什么?错误是什么?它与 ASP.NET 有何关系? 编辑了问题 【参考方案1】:

我像下面这样解决这个案例。

类库项目中的实体,我试图在其他项目中使用。 所以在那个项目中,我在新项目中添加了参考 "EntityFramework.SqlServer.dll"

【讨论】:

【参考方案2】:

在我的情况下,这个问题是在我更新 .edmx 文件之后出现的。删除上面的所有表并重新更新它。右键单击 .tt 文件(例如 Entity.tt)文件->运行自定义工具。然后我的问题解决了。

【讨论】:

【参考方案3】:

似乎我有 2 个问题导致了该错误。首先,有一些存储过程和视图,在我解决之后(删除了我的模型,再次创建它们并且我取消选中了包括存储过程,我只将表添加到模型中,没有视图也没有存储过程)我可以访问一些数据,但不是全部。第二个问题是我忘记添加到依赖数据库的连接。

所以我的存储库中的方法如下所示:

public myType GetSomething()

 var db = new model();
 var dependencyDb = new dependencyModel();
 //do whatever needs to be done with the data before presenting it
 return something;

P.S...我不必明确地将其带到所需的表中,在我添加连接后,它会自行找到所需的所有内容。

希望这对遇到此问题的人有所帮助。

【讨论】:

【参考方案4】:

从 edmx 中删除模型并再次添加它应该可以解决问题。请注意,除非使用源代码管理工具,否则无法恢复。

【讨论】:

cr*p...我不小心编辑了您的答案而不是写评论,srry...就像我说的...甚至无法跟踪依赖关系,因为它们确实从我的模型中丢失即使在我重建之后...... 没关系,我宁愿在这个场景中做的是从 edmx 中删除模型并再次添加它以关闭大多数更改问题。请注意,除非您使用适当的源代码控制工具,否则无法恢复。添加它们后进行验证。

以上是关于指定的 EntityFramework 架构无效的主要内容,如果未能解决你的问题,请参考以下文章

元素“entityFramework”具有无效的子元素“提供者”。预期的可能元素列表:“上下文”

自动映射器显示错误“指定的演员表无效。”

实体框架 - 列名“*_ID”无效

如何使用 Oracle.ManagedDataAccess.EntityFramework 提供程序从不同的架构中选择表?

MSB6004 指定的任务可执行位置“\rc.exe”无效

未能加载文件或程序集“EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”