无法确定存储版本 - Entity Framework

10

我正在当前解决方案的一个独立项目中实现“Code First”模式。 自从我这样做并在DbContext中初始化连接字符串后,我遇到了这个奇怪的错误:

无法确定存储版本;需要有效的存储连接或版本提示。

我正在使用Entity Framework 5.0.0.0,我的解决方案的其他项目都很好地使用EDMX文件进行数据库访问,但只有我的Code First项目会抛出此异常。 这是什么原因?

6个回答

25

使用以下方法解决了同样的问题:

进入“解决方案资源管理器”

  1. 右键单击“xxx.edmx”文件
  2. 选择“打开方式” >> “编辑器 XML 编辑器”
  3. 将 ProviderManifestToken="XXXX" 更改为 2008

1
它说2012年,我的开发机和外部服务器都有SQL Server 2012,我尝试了一下,因为实际上使用value = "2012"并没有起作用,所以你能失去什么呢...然后就开始工作了!谢谢!它运行正常! - Gabriel G
这对我也起作用了。我认为这可能与在部署版本中针对SQL 2008而在我的开发服务器上使用SQL 2014有关(甚至不要问为什么)。 - Tundey
我有点困惑。楼主似乎在暗示他们的项目没有EDMX文件,那么他们怎么能右键单击它呢? - O. R. Mapper

6

当我将每个使用Entity Framework的项目升级到Entity Framework 6.1.2时,问题似乎得到了解决。

运行得非常好!


3
删除 EF 表格 __MigrationHistory,假设你只是在测试中使用迁移。

1
安装 EFTools6.1.3ForVS2012,我的问题得到了解决。

1
你能否更深入地解释一下这是什么,以及为什么/在哪种情况下它可能会改变任何东西?那个工具必须随我们的产品一起交付,以便后者可以执行吗? - O. R. Mapper

0

请按照以下步骤操作。

  1. 将实体框架更新到最新稳定版本。
  2. 更新edmx模型。
  3. 右键单击文件.edmx
  4. 使用..编辑器XML打开
  5. 将ProviderManifestToken="XXXX"更改为2008

0
我曾经遇到过同样的问题。在我的情况下,由于某种原因,应用程序配置文件中的configSections标签中没有实体框架部分。添加它解决了我的问题。

required app.config/web.config line


5
在问题和答案中,以文本形式发布文本通常更好。请将您的图像更改为文本。 - DaFois
请问您能解释一下为什么这会有帮助吗?据我所知,<configSections>元素的子元素仅用于告诉.NET的配置Xml处理器如何反序列化同一配置文件中的其他部分。如果我的配置文件一开始就没有任何<entityFramework> 部分,那么在<configSections>元素中声明部分类型是否会产生任何影响呢? - O. R. Mapper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接