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
appsettings.json
"ConnectionStrings": {
    "MockSchoolManageMentConnection": "Data Source = .;Initial Catalog = MockSchoolManageMentDb;User Id = sa;Password = ......;"
  }
startup(.net 6.0及更高版本没有这个文件,在program中配置,如有需要,自行配置):
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

posted @ 2022-02-18 14:54  rookiexwang  阅读(747)  评论(0编辑  收藏  举报