EF Core教程
本教程不解释为啥这么做,只是用作个人学习记录,想了解为什么的朋友,请翻阅其他技术文章
本文摘自深入浅出Asp.Net Core
1.首先安装nuget包 在你的数据访问层中
我用的是sql server 所以安装 Microsoft.EntityFrameworkCore.SqlServer,不是sqlserver的朋友自行bing一下,版本要与你的.net版本一致,例如3.1就用3.1 安装其他版本会报错不兼容的问题
因为包之间存在引用关系,所以安装这一个nuget包即可,sqlserver的包依赖于efcore的包,请自行查看
2.创建Dbcontext数据库连接上下文,取名为AppDbcontext(其他名称也可以,自己定义),为了与dbcontext类作区分,继承于Dbcontext,引入的命名空间为:using Microsoft.EntityFrameworkCore;
创建一个构造函数,为了方便后面配置连接数据库字符串等
代码部分:
AppDbContext.cs
AppDbContext.cs
public class AppDbContext:DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options):base(options)
{
}
public DbSet<Student> Students { get; set; }
}
appsettings.json
"ConnectionStrings": {
"MockSchoolManageMentConnection": "Data Source = .;Initial Catalog = MockSchoolManageMentDb;User Id = sa;Password = ......;"
}
startup.cs
public void ConfigureServices(IServiceCollection services)
{
//使用 sqlserver数据库 通过IConfiguration去获取,自定义名称的Mock
//StudentDbConnection作为我们的连接字符串
services.AddDbContextPool<AppDbContext>(options =>options.UseSqlServer(configuration.GetConnectionString("MockSchoolManageMentConnection")));
services.AddControllersWithViews().AddXmlSerializerFormatters();
services.AddSingleton<IStudentRepoistory, MockStudentRepoistory>();
//services.AddTransient<IStudentRepoistory, MockStudentRepoistory>();
//services.AddControllersWithViews(a=>a.EnableEndpointRouting=false)
// //要想让返回值的来行根据你的请求头设置返回值的类型返回
// //将控制器返回值类型设置为objectresult 返回值用objectresult包起来 再将返回值这里加AddXmlSerializerFormatters方法
// .AddXmlSerializerFormatters();
}
数据库迁移(model first)
visual studio
:
1.首先打开程序包管理器控制台
安装efcore.tool包 也是和之前的一样,需要和你.NET 版本一致
Install-Package Microsoft.EntityFrameworkCore.Tools -Version 3.1
.net Core2.0之前自带这个包,2.0之后不带了。需要手动安装
2.生成迁移文件
Add-Migration InitialCreate(名称随便定义, 前面的命令不能改)
3.更新数据库(没有创建数据库的会自动创建)
Update-Database InitialCreate
进行到这一步,你的数据库已经创建了,可以去数据库看一下数据库有没有生成,数据库和表都生成成功,即代表成功
visual studio code
:
点开dotnet控制台
依次执行以下命令
dotnet add package Microsoft.EntityFrameworkCore.Design --添加包
dotnet ef migrations add InitialCreate -- 生成迁移文件
dotnet ef database update --生成数据库,及更新/生成数据表
dbfirst
:
dotnet ef dbcontext scaffold "数据库连接字符串" Microsoft.EntityFrameworkCore.SqlServer --project DealerPlatform.Core --output-dir Models --context-dir Core
dotnet cli参考:https://docs.microsoft.com/zh-cn/ef/core/cli/dotnet