#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
执行迁移:Update-Database -Script -SourceMigration:"201901210832533_addTemporaryAttendanceDetail20190121.cs" -TargetMigration:"201902282225506_updatetableColumnName2019-03-01.cs"
第一个参数为你要执行的migration前一个migration的名称,第二个参数为你要执行的最后一个migration,这样设置好以后会将这两个之间的migration生成对应的脚本
EF Core命令:Script-Migration -From migrationName1 -To migrationName2
附加:https://www.cnblogs.com/xsj1989/p/9338518.html
部分更新 参考: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(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2022-09-20 vue3在单独的js文件中使用pinia报错:getActivePinia was called with no active Pinia. Did you forget to install pinia?