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的历程。
- 首先准备一个项目,安装好Entity Framework 6等 package,右键项目解决方案,找到【管理Nuget程序包】,浏览安装即可
- 安装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不放在里面会报如下错误
以上全部配置完毕,添加连接字符串如下:
<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 这里面有代码,需要代码的可以去看看