EF6 使用SQLite Code First

SQLite是一款轻型关系型数据库,做一个小网站,用来替代sql server或者access数据库应该会是一个不错的选择。

ASP.NET Entity Framework 6是微软平台的著名ORM框架,说是著名是因为除了它也没几个其他的了。当然NH、Dapper等等也有不少,官方的就这一个,一路走来性能和易用性都很多提高,现在应该是有了很大用户量了,最主要的还是它本身就是官方的,所以和C#语言结合的很好,基本配置配置就可以用,尤其是Code First的使用,更加方便,可以完全不用去管数据库那边,一切都在代码中,保持了对业务的专注。

偶尔的一个想法,使用SQLite+EF6+MVC5做一个小站,采用Code First的方式。

然后就发现了一个很坑的事情,SQLite不支持code first……

google了很多方案,最后发现了一个支持的组件,System.Data.SQLite.EF6.Migrations,简单分享下SQLite Code First的历程。

    1. 首先准备一个项目,安装好Entity Framework 6等 package,右键项目解决方案,找到【管理Nuget程序包】,浏览安装即可
    2. 安装System.Data.SQLite.EF6.Migrations包 ,安装完毕后Webconfig会有一些变化,默认WebConfig中会增加
providers
DbProviderFactories

两个小节的配置内容,记不得安装完是什么样的 ,我这里贴一下安装完毕后调整过的配置

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <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>
  </entityFramework>
  <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>

注意:<system.data> 里面的内容,如果DbProviderFactories不放在里面会报如下错误

QQ截图20170725125435

以上全部配置完毕,添加连接字符串如下:

<add name="Default" connectionString="Data Source=|DataDirectory|demo.db;Version=3;Pooling=true;Cache Size=-524288;Journal Mode=Memory;Max Pool Size=100;" providerName="System.Data.SQLite.EF6" />

好了,不出意外的话,执行数据迁移,会在app_data目录下生成一个demo.db的文件。

百度下载一个SQLiteStudio,可以打开db文件。

参考文章:https://www.coderbusy.com/archives/616.html  这里面有代码,需要代码的可以去看看

原文地址:https://www.cnblogs.com/buyixiaohan/p/7233507.html