上一篇文章总结了MSSQL、MYSQL如何使用EF Code First,这篇文章总结下如果SQLite的数据库如何使用EF Code First,两种方式类似,只是SQLite需要引用一些外部库
如果使用Nuget:添加System.Data.SQLite和System.Data.SQLite.EF6.Migrations就可以了,System.Data.SQLite会自动加入其它的库,添加引用后最终会有如下库
System.Data.SQLite
System.Data.SQLite.Core
System.Data.SQLite.EF6
System.Data.SQLite.EF6.Migrations
System.Data.SQLite.Linq
第一步:建立实体类(和上一篇文章一样,只是用来演示,就没改)
例如:用户类(测试用,没写那么多,只有简单的创建时间,用户昵称和唯一标识),这个类是数据库中的表映射到C#中的对象,所以可以说是C#中对象,也可以说是数据库中的表。
public class UserTable
{
public string Id { get; set; }
public DateTime BuildTime { get; set; }
public string NickName { get; set; }
}
第二步:这里多一步,创建数据库配置类
public class Configuration : DbMigrationsConfiguration<DbModels>
{
//设置初始化行为和参数
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
//注意这里第一个参数是entityFramework节点下的provider的invariantName属性
SetSqlGenerator("System.Data.SQLite", new SQLiteMigrationSqlGenerator());
}
//添加数据库初始数据,我使用的时候,每次运行程序都会执行,不是只有创建数据库的时候才执行,请知道的高手告知
protected override void Seed(DbModels context)
{
context.User.Add(new UserTable()
{
BuildTime = DateTime.Now,
Id = Guid.NewGuid().ToString(),
NickName = "郭铭心",
});
context.SaveChanges();
}
}
第三步:建立数据库上下文
创建类DbModels,也可以直接创建ADO.NET 实体数据模型,然后选择空CodeFirst模型
内容如下:
public class DbModels : DbContext
{
//构造方法,base("这里是使用的ConnectString"),设置连接字符串
public DbModels() : base("name=DbModels")
{
//使用指定的配置类,配置数据库
Database.SetInitializer(new MigrateDatabaseToLatestVersion<DbModels, Configuration>());
}
public virtual DbSet<UserTable> User { get; set; }
}
第四步:配置文件
entityFramework节点下,需要设定预处理程序
<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
connectionStrings节点下,设定在应用程序根目录创建
<add name="DbModels" connectionString="data source=.\Sqlite_Db.db" providerName="System.Data.SQLite" />
第五步:可以在程序的入口载入初始数据,读取数据,添加数据或修改数据后,注意使用SaveChanges()方法保存数据到数据库