.net core 3.1 EF Code First 实例

准备工作

1.创建Models以及Repository.SqlServer类库

2.创建WebHost网站程序(创建webHost只是为了后续web站点做准备)

3.Models引用 Microsoft.EntityFrameworkCore

4.Repository.SqlServer 引用 Microsoft.EntityFrameworkCore、Microsoft.EntityFrameworkCore.SqlServer、Microsoft.EntityFrameworkCore.Tools

5.WebHost 引用 Microsoft.EntityFrameworkCore、Microsoft.EntityFrameworkCore.Tools

6.WebHost站点中 appsettings.json 增加配置 ConnectionStrings 的配置

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "ConnectionStrings": {
    "Default": "Server=.;DataBase=DefaultDB;uid=sa;pwd=123123"
  },
  "AllowedHosts": "*"
}

开始

1.在Models中创建实体模型,BaseModel中只是实现了统一Guid的主键

namespace Models
{
    public class User: BaseModel
    {
        /// <summary>
        /// 用户名
        /// </summary>
        [Display(Name = "用户名")]
        public string UserName { get; set; }
    }
}

2.在Repository.SqlServer中添加Mapping类型

namespace Repository.SqlServer.Mapping
{
    public class UserMap : EntityMappingConfiguration<User>
    {
        public override void Map(EntityTypeBuilder<User> b)
        {
            // 映射表
            b.ToTable("TD_User");
            // 申明主键
            b.HasKey(p => p.Id);

            // 字段映射
            b.Property(c => c.Id).HasColumnName("Id").HasColumnType("varchar").HasMaxLength(36).IsRequired();            
            b.Property(p => p.UserName).HasColumnName("UserName").HasColumnType("nvarchar").HasMaxLength(100).IsRequired();
        }
    }
}

统一配置实体类型参考链接 https://stackoverflow.com/questions/26957519/ef-core-mapping-entitytypeconfiguration#comment46244976_26957519

3.增加DefaultDBContext类型

namespace Repository.SqlServer
{
    public class DefaultDBContext : DbContext
    {
        public DefaultDBContext(DbContextOptions<YangDBContext> options) : base(options)
        {
        }


        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.AddEntityConfigurationsFromAssembly(GetType().Assembly);
        }
    }
}

4.WebHost站点中 Startup.cs 文件增加数据库连接池

public void ConfigureServices(IServiceCollection services)
{
      services.AddDbContextPool<DefaultDBContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Default")));//配置数据库连接字符串
}

获取配置文件的信息参考:https://jingyan.baidu.com/article/ac6a9a5eb9bcf46b643eac5d.html

5.执行如下命令,默认项目设置为Repository.SqlServer所在项目

PM> Add-Migration FirstMigration

PM> Update-Database -Verbose

 

posted @ 2021-02-18 17:45  好久没找你聊天了  阅读(67)  评论(0)    收藏  举报