JOC.EFCore使用
1、添加引用
项目中Nuget包 JOC.EFCore
2、添加表
表需要继承JOC.EFCore.Table.ITable
接口
C# 全选
public class tb_user : JOC.EFCore.Table.ITable
{
/// <summary>
/// 账号
/// </summary>
public string Account { get; set; }
/// <summary>
/// 密码
/// </summary>
public string Password { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string UserName { get; set; }
}
3、新建DbContext
C# 全选
public class BusinessDbContext : JOC.EFCore.JOCDbContext
{
public BusinessDbContext(IJOCConfig config, ITenantService tenantService) : base(config, tenantService)
{
}
public override void EntityTables(ModelBuilder modelBuilder)
{
// 加载当前程序集的表结构
modelBuilder.EntityTables(this._Config, Assembly.GetExecutingAssembly());
}
}
4、Startup.cs中注册数据库上下文
C# 全选
#region 设置DbContext
services.AddEFCoreJOC(config =>
{
#region 注册数据源提供程序
config.RegisterDataBase("SQLite", (optionsBuilder, conn) =>
{
optionsBuilder.UseSqlite(conn.ConnectionString);
});
#endregion
#region 配置数据库连接
// 系统数据库
string connection = "Data Source=.\\data.db;Version=3;UseUTF16Encoding=True;";
config.AddDataSource(new JocConnection("SQLite", "", connection));
#endregion
});
#endregion
5、自动生成数据库迁移
C# 全选
public class DBMergeProvider : IDBMerge
{
public void DoDBMigrate(IJOCConfig config, string tenant)
{
using (BusinessDbContext entities = new BusinessDbContext(config))
{
/*
不过数据库model有改动的话需要先执行下 add-migrate xxx 命令,然后每次运行程序GetPendingMigrations()就会检测有无更新,有的话自动迁移。
GetPendingMigrations方法官方文档说明 https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.entityframeworkcore.relationaldatabasefacadeextensions.getpendingmigrations?view=efcore-2.1
*/
if (entities.Database.GetPendingMigrations().Any())
{
entities.Database.Migrate();
}
}
}
}
Startup.cs中初始化迁移
C# 全选
#region 数据库迁移
// 获取配置
var serviceProvider = services.BuildServiceProvider();
var config = serviceProvider.GetService<IJOCConfig>();
EFCore.DBMerge.IDBMerge dbMerges = JOC.EFCore.DBMerge.DBMergeProvider.GetDBMerge(Assembly.GetExecutingAssembly());
// 生成迁移
dbMerges.DoDBMigrate(config, "");
#endregion
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
post 张国生