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);

 

posted @ 2023-04-20 09:33  你像风  阅读(1096)  评论(0)    收藏  举报