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

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

    参考

  • 相关阅读:
    js和java中使用join来进行数组元素的连接
    java的fail-fast 和 fail-safe机制
    chrome上表单的用户名密码autofill
    InnoDB索引底层是如何查询数据的?
    浏览器允许的并发请求资源数是什么意思?
    async/await的使用
    java获取HttpServletRequest 的客户端ip
    Free software
    Linux 配置 mysql 5.7.32 实操记录
    mysql 帮助手册翻译
  • 原文地址:https://www.cnblogs.com/taadis/p/12125835.html
Copyright © 2011-2022 走看看