首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EdmGen.exe不能使用大于1.0.94.0的System.Data.SQLite版本

EdmGen.exe不能使用大于1.0.94.0的System.Data.SQLite版本
EN

Stack Overflow用户
提问于 2017-10-30 23:44:30
回答 1查看 154关注 0票数 0

我一直在尝试用System.Data.SQLite建立实体框架(目标是.NET 4.0)。我正在使用Visual 2017,所以我知道没有可用的设计时组件。

我碰巧看到了手动设置所有内容的指南:https://liiw.blogspot.co.uk/2014/12/sqlite-entity-framework-database-first.html

不过,我将总结以下链接中的说明:

一个文件夹,包含以下项目:

  • EdmGen.exe (从C:\Windows\Microsoft.NET\Framework\v4.0.30319复制)
  • EdmGen.exe.config
  • x86x64文件夹,每个文件夹都包含各自的SQLite.Interop.dll
  • System.Data.SQLite.dll
  • System.Data.SQLite.EF6.dll
  • System.Data.SQLite.Linq.dll
  • TestDatabase.sqlite,它包含一些测试表。
  • gen.bat

EdmGen.exe.config的内容如下:

代码语言:javascript
复制
<configuration>
    <system.data>
        <DbProviderFactories>
            <remove invariant="System.Data.SQLite"/>
            <add name="SQLite Data Provider" invariant="System.Data.SQLite"
                 description=".Net Framework Data Provider for SQLite"
                 type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
        </DbProviderFactories>
    </system.data>
</configuration>

gen.bat的内容如下:

代码语言:javascript
复制
EdmGen.exe /mode:fullgeneration /c:"Data Source=TestDatabase.sqlite" /provider:System.Data.SQLite /entitycontainer:TestDatabase /project:TestDatabase /language:CSharp

运行gen.bat (或上面的命令)并将System.Data.SQLite二进制文件作为System.Data.SQLite的最新版本(或任何大于1.0.94.0的版本)将产生以下错误:

代码语言:javascript
复制
error 7001: The provider returned schema mapping information that is not valid.
        Schema specified is not valid. Errors:
StoreSchemaDefinition(2,65) : error 0175: The specified store provider cannot be found in the configuration, or is not valid.

它适用于1.0.94.0版本的System.Data.SQLite程序集。

在谷歌上搜索错误,并没有找到任何关于我正在经历的问题的答案。我在这里做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-11 20:17:37

于是我打开了一张system.data.sqlite.org票,结果发现EdmGen.exe不支持实体框架6。他们提供了用于生成对象的以下说明:

EdmGen工具显然与EF6不兼容。相反,您需要使用遗留提供程序,即System.Data.SQLite.Linq。 在"EdmGen.exe.config“文件中,使用: 然后在"gen.bat“文件中: EdmGen.exe /mode:fullgeneration /c:"Data Source=TestDatabase.sqlite“/provider:System.Data.SQLite.Linq /entitycontainer:TestDatabase /project:TestDatabase /language:CSharp 上面的"EdmGen.exe.config“文件还将在当前目录中生成一个跟踪日志文件,这在调试中可能很有用。如果你愿意的话,你可以移除那部分。

不幸的是,我不知道如何为实体框架6生成对象,而且我对实体框架( Entity )非常陌生,所以对实体框架6和以前版本的实体框架之间的区别不太了解。不过,希望这一答案对今后遇到这一问题的其他任何人都有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47025852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档