asp.net core 3.1使用EFCore

1.增加一个实体类

/// <summary>
    /// 团队成员模型
    /// </summary>
    public class Member
    {
        /// <summary>
        /// 团队成员主键
        /// </summary>
        public int Id { set; get; }
        /// <summary>
        /// 团队成员名
        /// </summary>
        public string FirstName { set; get; }
        /// <summaryhua
        /// 团队成员花名
        /// </summary>
        public string NickName { set; get; }

        /// <summary>
        /// 团队主键
        /// </summary>
        public int TeamId { set; get; }
    }

2.增加一个数据库上下文实体

public class MemberContext : DbContext
    {
        public MemberContext(DbContextOptions<MemberContext> options) : base(options)
        {
        }

        public DbSet<Member> Members { get; set; }
    }

3.注册上下文到IOC容器

     public void ConfigureServices(IServiceCollection services)
        {
            // 1、注册上下文到IOC容器
            services.AddDbContext<MemberContext>(options => {
                options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
            });
        }

4.appsettings.json 添加数据库配置

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "DefaultConnection": "Data Source=.;Initial Catalog=memberservice;Persist Security Info=True;User ID=sa;Password=tony"
  }
}

5.安装EF Core 命令行工具

dotnet tool install --global dotnet-ef

asp.net core 3.1使用EFCore

6.安装NuGet包 Microsoft.EntityFrameworkCore.Design

7.增加初始化迁移,更新数据库

执行命令

dotnet ef migrations add test

asp.net core 3.1使用EFCore

执行成功后,在项目中会生成脚本操作

asp.net core 3.1使用EFCore

执行命令

dotnet ef database update

asp.net core 3.1使用EFCore

执行成功后,生成数据库

asp.net core 3.1使用EFCore

8.添加服务接口

    public interface IMemberService
    {
        IEnumerable<Member> GetMembers();
        IEnumerable<Member> GetMembers(int teamId);
    }

9.添加服务实现

    public class MemberServiceImpl : IMemberService
    {
        public readonly IMemberRepository memberRepository;
        public IEnumerable<Member> GetMembers()
        {
            return memberRepository.GetMembers();
        }
        public IEnumerable<Member> GetMembers(int teamId)
        {
            return memberRepository.GetMembers(teamId);
        }
    }

10.添加仓储接口

    public interface IMemberRepository
    {
        IEnumerable<Member> GetMembers();
      
        IEnumerable<Member> GetMembers(int teamId);
    
    }

11.添加仓促实现

    public class MemberRepository : IMemberRepository
    {
        public MemberContext teamContext;
        public MemberRepository(MemberContext teamContext)
        {
            this.teamContext = teamContext;
        }
      
        public IEnumerable<Member> GetMembers()
        {
            return teamContext.Members.ToList();
        }

        public IEnumerable<Member> GetMembers(int teamId)
        {
            return teamContext.Members.Where(memeber => memeber.TeamId == teamId);
        }
    }

12.注册service和仓促

     public void ConfigureServices(IServiceCollection services)
        {
            // 1、注册上下文到IOC容器
            services.AddDbContext<MemberContext>(opt =>
           opt.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));  //使用SqlServer数据库

            // 2、注册成员service
            services.AddScoped<IMemberService, MemberServiceImpl>();

            // 3、注册成员仓储
            services.AddScoped<IMemberRepository, MemberRepository>();

            services.AddControllers();
        }

13.添加Controller

    [Route("api/[controller]")]
    [ApiController]
    public class MembersController : ControllerBase
    {
        private readonly IMemberService memberService;

        public MembersController(IMemberService memberService)
        {
            this.memberService = memberService;
        }
        /// <summary>
        /// 查询所有成员信息
        /// </summary>
        /// <param name="teamId">?teamId参数结尾方式</param>
        /// <returns></returns>
        [HttpGet]
        public ActionResult<IEnumerable<Member>> GetMembers(int teamId)
        {
            if (teamId == 0)
            {
                return memberService.GetMembers().ToList();
            }
            else
            {
                return memberService.GetMembers(teamId).ToList();
            }
        }
    }

14.查看运行结果

asp.net core 3.1使用EFCore

 

asp.net core 3.1使用EFCore

上一篇:CoffeeScript飞一样的写javascript


下一篇:哪些编程语言、框架/平台最受企业青睐?