有没有人在Visual Studio 201#中使用新的System.Data.SQLite 1.0.91.0与Entity Framework 6一起工作?如果你有,你是怎么做到的?
更新 - 2014年3月20日:System.Data.SQLite 1.0.92.0已经发布但我没有在VS2013中创建EDMX的运气:(我最终使用包管理器(因为EF6.#.#是新SQLite中的依赖项) NuGet包):
uninstall-package entityframework -force
Run Code Online (Sandbox Code Playgroud)
重新启动VS2013并打开旧版EF5以获取VS2013以从现有数据库生成EDMX:
install-package entityframework -version 5.0.0
Run Code Online (Sandbox Code Playgroud)
注意:这不是一个复杂的多表SQLite关系数据库测试,所以如果我使用多个导航(FK)关系的任何东西,我不确定会出现什么其他问题:/
回答EDMX /模型的答案:(更新 - 2014年3月2日)我找到了解决办法,但它不够一致,需要太多步骤才能将其视为有效的解决方案.基本上:
你制作所有的Class(es)文件,
使用表建立与现有SQLite数据库的连接,
修改web/app.config,如仍然出色的SQLite故障单(http://system.data.sqlite.org/index.html/tktview?name=7b8fd3ef77)中的mistachkin所述,包括伪造cdsl/.ssdl /.msl件,和
然后在重建项目之前在Empty EDMX中手动创建Designer中的所有实体模型,然后......
右键单击实体并选择"从数据库更新"...
有时EF/VS2013会添加.tt/DbContesxt,有时则不会.方式也'命中或错过':(
有和没有现有SQLite数据库的"Code First"的答案(基于PMCB,Drexter和Jimi的建议).但请注意,您无法在Visual Studio 2013中自动生成任何EF模型或EDMX文件[原文如此 - 概念架构定义语言(.CSDL),存储架构定义语言(.SSDL)和映射规范语言(.MSL)].我做了不要尝试手动创建EDMX文件以查看它们是否适合EF,即使我这样做,在我看来,做所有手动创建/映射/更改/ XML编辑都会破坏基于实体的框架的整个目的/概念...
<connectionStrings>
<add name="DogsContext" connectionString="Data Source=|DataDirectory|\dogs.s3db;" providerName="System.Data.SQLite" />
</connectionStrings>
<entityFramework>
<providers>
<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6, Version=1.0.91.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
</providers>
</entityFramework>
<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, Version=1.0.91.0, …Run Code Online (Sandbox Code Playgroud)