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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?