.net core创建数据库、seed数据、部分修改字段

发布时间 2023-09-20 14:15:21作者: 邢帅杰

#region 创建数据库
//如果数据库有表,则 EnsureCreated 方法不执行任何操作。
//如果没有数据库,或者没有任何表,则它将创建数据库和架构。
//EnsureCreated 启用以下工作流来处理数据模型更改:
//删除数据库。更改数据模型。重新运行应用。
//EnsureCreated 创建具有新架构的数据库。
//在无需保存数据的情况下,当架构快速发展时,此工作流在早期开发过程中表现良好。
//如果需要保存已输入数据库的数据,情况就有所不同了。 如果是这种情况,请使用迁移。
//程序包管理控制台执行命令删除数据库:Drop-Database -Confirm
using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;
var context = services.GetRequiredService<DataMgrContext>();
//使用migration迁移,注释掉EnsureCreated(),migration会创建迁移记录表(__efmigrationshistory)
//context.Database.EnsureCreated();
//播种,初始化基础数据或者测试数据。
DbInitializer.Initialize(context);
}
#endregion
migration命令:
Add-Migration InitialCreate
Update-Database

部分更新 参考:http://blog.baibaota.com/1960.html
dto中只有部分需要修改的字段,使用 SetValues 方法自动映射赋值,类似ObjectMapper那样。

public void Save(StudentDto dto)
{
    var stu = _dataContext.Students.Where(x => x.Id == dto.Id).FirstOrDefault();
    var entry = _dataContext.Update<Student>(stu);
    entry.CurrentValues.SetValues(dto);
    _dataContext.SaveChanges();
}