C# ef连接sqlite(相对路径)
1.nuget程序包添加System.Data.SQLite

2.安装成功后,web.config会出现

<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>

<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
<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>
3.数据库连接
<connectionStrings> <add name="SQLiteConnection" connectionString="data source=|DataDirectory|\xx.db" providerName="System.Data.SQLite.EF6" /> </connectionStrings>
public class UserContext : DbContext
{
public UserContext()
: base("SQLiteConnection")
{
}
}
4.数据库存放位置
|DataDirectory| 在mvc中代表App_Data文件夹,发布时数据库文件存放在App_Data文件夹内即可。
|DataDirectory| 在控制台或windows服务时不代表App_Data文件夹,如需可采用下面代码在main方法里转换
//转换数据库地址
string dataDir = AppDomain.CurrentDomain.BaseDirectory;
dataDir = System.IO.Directory.GetParent(dataDir).Parent.FullName + "\\App_Data";
AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);

浙公网安备 33010602011771号