數據庫:SqlServer
EntityFrameworkCore版本:3.1.4
1、添加依賴包
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools //用於在“程序包管理控制檯”和“CMD”執行命令
2、根據數據庫生成實體類(Models)和數據庫上下文(DbContext)
打開程序包管理控制檯:工具 => NuGet包管理器 => 程序包管理控制檯
執行命令:Scaffold-DbContext "Data Source=.;Initial Catalog=UserService;User ID=sa;Password=123456" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -ContextDir Context -Context UserContext -DataAnnotations -Force
-OutputDir <String> 實體文件所存放的文件目錄
-ContextDir <String> DbContext文件存放的目錄
-Context <String> DbContext文件名,可以指定別名,防止替換掉改好的DBContext。
-Schemas [params] 需要生成實體數據的數據表所在的Schemas ,默認是dbo
-Tables [params] 需要生成實體數據的數據表的集合
-DataAnnotations 是否生成特性;如:實體類屬性上的[Key]、[StringLength(8)] 等
-UseDatabaseNames 直接使用數據庫中的表名和列名(某些版本不支持)
-Force 強制執行,重寫已經存在的實體Models文件和上下文DbContext文件
錯誤處理:
1、如果生成失敗(Build failed.),請確定項目能生成成功。
2、Your startup project 'ApiDemo_Core3_1' doesn't reference Microsoft.EntityFrameworkCore.Design. This package is required for the Entity Framework Core Tools to work. Ensure your startup project is correct, install the package, and try again.
在啓動項目“ApiDemo_Core3_1”中安裝“Microsoft.EntityFrameworkCore.Design”
或者 將EF所在類庫設爲啓動項再執行。
3、打印Console日誌
添加依賴:Microsoft.Extensions.Logging 、 Microsoft.Extensions.Logging.Console
修改上下文類DbContext:
private readonly static ILoggerFactory loggerFactory = LoggerFactory.Create(config => { config.AddConsole(); });
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer("Data Source=.;Initial Catalog=UserService;User ID=sa;Password=123456").UseLoggerFactory(loggerFactory);
}
}