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(); }