zoukankan      html  css  js  c++  java
  • 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);
        }
    }
    

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

    参考

  • 相关阅读:
    java获取src下包的文件的路径
    Java获取日期属于当年第几周
    DIV的内容自动换行
    js验证身份证格式
    处理 WebService 中的 Map 对象
    Oracle使用row_number()函数查询时增加序号列
    SpingMVC实现集合参数(Could not instantiate bean class [java.util.List])
    利用JS实现在li中添加或删除class属性
    栈的应用之中缀表达式转后缀表达式
    栈的应用之判断括号匹配
  • 原文地址:https://www.cnblogs.com/taadis/p/12125835.html
Copyright © 2011-2022 走看看