当C#抛出异常时,它可能有一个内部异常.我想要做的是获取最内部的异常,或者换句话说,没有内部异常的叶子异常.我可以在while循环中执行此操作:
while (e.InnerException != null)
{
e = e.InnerException;
}
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有一些我可以使用的单行代替.
有没有人在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) 我认为sqlite很简单,但它让我很难过.我只想创建一个应用程序,我可以使用ado.net实体数据类连接到sqlite数据库.
我在运行Windows XP的虚拟计算机上测试应用程序时遇到此问题.当我部署它们时,应用程序在我当前的计算机上以及在我的笔记本电脑上运行正常
以下是虚拟计算机上发生的情况:
当我尝试连接时,我得到以下异常:


我知道有很多帖子都在谈论这个,大多数人说你需要为Sqlite下载.NET提供程序.
我已经安装了sqlite-netFx40-setup-bundle-x86-2010-1.0.79.0.exe,我遇到了同样的问题.我该怎么办?
我设法通过添加以下内容来建立连接:
<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>
Run Code Online (Sandbox Code Playgroud)
到我的app.config文件.
问题是现在我无法选择数据也不能将记录插入数据库.我尝试插入新记录时遇到的例外情况是:
在类型为"System.Data.SQLite.SQLiteFactory"的商店提供程序实例上调用"GetService"方法后返回null.商店提供商可能无法正常运行.
