我一直在尝试用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.configx86和x64文件夹,每个文件夹都包含各自的SQLite.Interop.dllSystem.Data.SQLite.dllSystem.Data.SQLite.EF6.dllSystem.Data.SQLite.Linq.dllTestDatabase.sqlite,它包含一些测试表。gen.batEdmGen.exe.config的内容如下:
<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的内容如下:
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的版本)将产生以下错误:
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程序集。
在谷歌上搜索错误,并没有找到任何关于我正在经历的问题的答案。我在这里做错了什么?
发布于 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和以前版本的实体框架之间的区别不太了解。不过,希望这一答案对今后遇到这一问题的其他任何人都有帮助。
https://stackoverflow.com/questions/47025852
复制相似问题