ef core 使用 .net core web api 自带的DI

以 SqlServer 为例

安装 Microsoft.EntityFrameworkCore.SqlServer 包

1 定义实体

    /// <summary>
    /// 实体类
    /// </summary>
    public class SysUserEntity
    {
        /// <summary>
        /// Id
        /// </summary>
        public string Id { get; set; }
        /// <summary>
        /// 用户账号
        /// </summary>
        public string UserCode { get; set; }
        /// <summary>
        /// 用户名
        /// </summary>
        public string UserName { get; set; }
    }

2 定义实体与表的映射关系

    /// <summary>
    /// 实体与表映射类
    /// </summary>
    public class SysUserMap : IEntityTypeConfiguration<SysUserEntity>
    {
        public void Configure(EntityTypeBuilder<SysUserEntity> builder)
        {
            builder.ToTable("SysUser");
            builder.HasKey(c => c.Id);
        }
    }

 

3 定义数据库上下文类

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;

namespace CAP.UserService
{
    public class UserDbContext : DbContext
    {
        public UserDbContext(DbContextOptions<UserDbContext> options)
            : base(options)
        {
        }

        public DbSet<SysUserEntity> SysUsers { get; set; }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);

            #region 直接写实体与表的映射关系
            //builder.Entity<SysUserEntity>(entity =>
            //{
            //    entity.ToTable("SysUser");
            //    entity.HasKey(x => x.Id);
            //});
            #endregion

            #region 通过映射类定义实体与表的映射关系
            builder.ApplyConfiguration((dynamic)Activator.CreateInstance(typeof(SysUserMap)));
            #endregion
        }
    }
}

 

4 在Startup中的 ConfiguServices 注册

            services.AddDbContext<UserDbContext>(options =>
            {
                options.UseSqlServer(ConfigurationHelper.GetSection("DatabaseConnectionStrings:SqlServer"));
            });

5 测试

        [HttpGet]
        public IActionResult TestEFCore()
        {
            var user = new SysUserEntity { Id = "U2", UserCode = "UserCode2", UserName = "UserName2" };
            _userDbContext.SysUsers.Add(user);
            _userDbContext.SaveChanges();

            return Ok();
        }

 

posted @ 2022-05-02 22:33  温故纳新  阅读(56)  评论(0编辑  收藏  举报