我正在使用EntityFramework和CodeFirst模型开发一个C#应用程序。我想在每台机器和每个应用程序安装上都有一个本地数据库。我的意思是当用户X在他的机器上安装应用程序时,应用程序应该创建并使用本地数据库文件。我尝试使用SQLite,但我没有运气,使用我的app.config中的以下连接字符串和dbFactory
<connectionStrings>
<add name="FaceBotDb"
connectionString=
"Data Source=|DataDirectory|FaceBotDb.sqlite"
providerName="System.Data.SQLite" />
</connectionStrings>
<system.data>
<DbProviderFactories>
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description="Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
我得到的例外是“不变量必须是唯一的”。我的主要问题是,在这种情况下,SQLite是否是我的最佳选择。是否有任何其他数据库可以使用EntityFramework并在本地存储它的文件。请注意,我可以将SQLite与纯ADO.NET一起使用,但只有在没有其他选择的情况下才会发生这种情况,因为EF有很多好处。
答案 0 :(得分:1)
“Microsoft SQL Server Compact Edition”是SQLite的最佳替代方案。它在本地存储它的文件,几乎所有的ORM都支持它。
在项目中安装它的最佳方法是在http://nuget.org/packages/SqlServerCompact/
使用Nuget