• EntityFrameworkCore 中实体的几种配置方法


    使用数据注解

    实体类通常是在Models目录下,直接在实体类上添加属性注解,比如[Required]/[Key]等.

    using System.ComponentModel.DataAnnotations;
    
    public class User()
    {
        [Key]
        public string UserId { get; set; }
    
        [Required]
        public string UserName { get; set; }
    }
    

    重写配置方法

    在自己实现的XxxDbContext数据库上下文类中重写配置方法,用Fluent API的方式添加所有实体的配置.

    using Microsoft.EntityFrameworkCore;
    
    public partial class XxxDbContext : DbContext
    {
        public XxxDbContext()
        {
        }
    
        public HaoyikuDbContext(DbContextOptions<HaoyikuDbContext> options)
            : base(options)
        {
        }
    
        public DbSet<User> Users { get; set; }
    
        // 重写以下方法
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            // 添加实体的配置
            modelBuilder.Entity<BizOrderPush>().HasKey();
        }
    }
    

    实现实体类配置接口

    • 新建ModelConfigurations目录,在该目录下新增每一个实体对应的配置类.
    using Microsoft.EntityFrameworkCore;
    using Microsoft.EntityFrameworkCore.Metadata.Builders;
    
    /// <summary>
    /// 用户实体-模型配置
    /// </summary>
    public class UserConfiguration : IEntityTypeConfiguration<User>
    {
        public void Configure(EntityTypeBuilder<User> builder)
        {
            builder.HasKey(o => o.UserId);
            builder.Property(o => o.UserName).IsRequired();
        }
    }
    

    单独配置每一个实体类后,通过以下方法设置

    using Microsoft.EntityFrameworkCore;
    
    public partial class XxxDbContext : DbContext
    {
        public XxxDbContext()
        {
        }
    
        public HaoyikuDbContext(DbContextOptions<HaoyikuDbContext> options)
            : base(options)
        {
        }
    
        public DbSet<User> Users { get; set; }
    
        // 重写以下方法
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            // 添加实体的配置
            modelBuilder.ApplyConfiguration(new UserConfiguration());
            base.OnModelCreating(modelBuilder);
        }
    }
    

    以上几种方式可以共存,至于到底用哪种,推荐用哪种,各位看着办吧.

    参考

  • 相关阅读:
    176. Second Highest Salary
    175. Combine Two Tables
    172. Factorial Trailing Zeroes
    171. Excel Sheet Column Number
    169. Majority Element
    168. Excel Sheet Column Title
    167. Two Sum II
    160. Intersection of Two Linked Lists
    个人博客记录
    <meta>标签
  • 原文地址:https://www.cnblogs.com/taadis/p/12125835.html
Copyright © 2020-2023  润新知