.net core 3.1 mvc 使用EntityFramework Core

陆宇航
2023-12-01

.net core 3.1 mvc 使用EntityFramework Core

交流QQ群:555913397
有什么问题可以加群大家一起交流

使用mvc制作网站项目怎么能少了ORM框架.下面我来带领大家一步一步配置EntityFramework Core…

1.创建Ef Core的类库

CoreMvc.EntityFrameworkCore
可以根据自己的习惯创建类库

2.引用nuget包

1.Microsoft.EntityFrameworkCore
2.Microsoft.EntityFrameworkCore.Design
3.Microsoft.EntityFrameworkCore.Proxies
4.Microsoft.EntityFrameworkCore.Tools
5.Microsoft.EntityFrameworkCore.SqlServer
6.Microsoft.Extensions.Configuration.Json
一下子引用这么多nuget包大家别紧张,都是用得上的.

3.创建Ef上下文类

using CoreMvc.Core.Models;
using Microsoft.EntityFrameworkCore;

namespace CoreMvc.EntityFrameworkCore
{
    public class CoreMvcDbContext : DbContext
    {
        //这里不再是接收一个数据库的连接字符串了
        //这里的DbContextOptions我们通过上下文工厂类
        public CoreMvcDbContext(DbContextOptions options) : base(options) { }
        //这里是申明数据库实体
        public DbSet<School> Schools { get; set; }
        public DbSet<Student> Students { get; set; }
    }
}

4.创建Ef上下文工厂类

这个类实现用于创建派生的DbContext实例的工厂。实现此接口可为没有公共默认构造函数的上下文类型启用设计时服务。在设计时,可以创建派生的DbContext实例,以启用特定的设计时体验,例如迁移。设计时服务将自动发现该接口的实现,这些实现位于启动程序集或与派生上下文相同的程序集中。

通俗的来讲就是通过这个工厂类来配置ef core里面的相应数据库设置.

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration;
using System;

namespace CoreMvc.EntityFrameworkCore
{
    public class CoreMvcDbContextFactory : IDesignTimeDbContextFactory<CoreMvcDbContext>
    {
        public CoreMvcDbContext CreateDbContext(string[] args)
        {
            var basePath = AppDomain.CurrentDomain.BaseDirectory;
            var builder = new DbContextOptionsBuilder<CoreMvcDbContext>();
            var builders = new ConfigurationBuilder()
                .SetBasePath(basePath)
                .AddJsonFile("appsettings.json", true, true);
            var configuration = builders.Build();
            builder.UseLazyLoadingProxies().UseSqlServer(configuration.GetConnectionString("Default"));
            return new CoreMvcDbContext(builder.Options);
        }
    }
}

5.创建数据库实体

学校实体
using CoreMvc.Core.BaseModels;

namespace CoreMvc.Core.Models
{
    public class School:Entity<int>
    {
        public string Name { get; set; }
    }
}
学生实体
using CoreMvc.Core.BaseModels;
using CoreMvc.Core.Enum;
using System;

namespace CoreMvc.Core.Models
{
    public class Student : Entity<int>, IAuditCreateTime, IAuditLastModifaction
    {
        public string Name { get; set; }
        public string Description { get; set; }
        public int Age { get; set; }
        public Sex Sex { get; set; }
        public DateTime CreateTime { get; set; }
        public DateTime LastModifaction { get; set; }
        public int SchoolId { get; set; }
    }
}

6.很重要的一步,需要给启动项目引用nuget包

1.Microsoft.EntityFrameworkCore.Design
如果不应用这个包,创建迁移会报错

7.测试效果

1.打开程序包管理控制台->默认项目选择CoreMvc.EntityFrameworkCore
2.输入迁移命令 add-migration Init  //这里的Init可以随便输入任何有意义的文字
3.update-databse
到此整个EntityFramework Core就算是搭建完成了.
 类似资料: