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

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

    参考

  • 相关阅读:
    Linux监控内核SNMP计数器
    wireshark使用手册
    【LinuxShell】echo用法详解
    【Coredump】调试之旅
    汇编指令
    从零开始学Java (五)条件选择
    从零开始学Java (四)输入输出
    Dart基础
    树相关
    递归简介
  • 原文地址:https://www.cnblogs.com/taadis/p/12125835.html
Copyright © 2020-2023  润新知