Several configuration methods of entities in entityframework core

Keywords: Attribute Database

Use data annotation

Entity classes usually add attribute annotation directly to entity classes in the Models directory, such as [Required]/[Key]

using System.ComponentModel.DataAnnotations;

public class User()
{
    [Key]
    public string UserId { get; set; }

    [Required]
    public string UserName { get; set; }
}

Override configuration method

The configuration method is rewritten in the context class of XxxDbContext database, and the configuration of all entities is added by 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; }

    // Override the following methods
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        // Add configuration for entity
        modelBuilder.Entity<BizOrderPush>().HasKey();
    }
}

Implement entity class configuration interface

  • Create a new ModelConfigurations directory, where you can add configuration classes corresponding to each entity
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;

/// <summary>
///User entity model configuration
/// </summary>
public class UserConfiguration : IEntityTypeConfiguration<User>
{
    public void Configure(EntityTypeBuilder<User> builder)
    {
        builder.HasKey(o => o.UserId);
        builder.Property(o => o.UserName).IsRequired();
    }
}

After each entity class is configured separately, it can be set by the following methods

using Microsoft.EntityFrameworkCore;

public partial class XxxDbContext : DbContext
{
    public XxxDbContext()
    {
    }

    public HaoyikuDbContext(DbContextOptions<HaoyikuDbContext> options)
        : base(options)
    {
    }

    public DbSet<User> Users { get; set; }

    // Override the following methods
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        // Add configuration for entity
        modelBuilder.ApplyConfiguration(new UserConfiguration());
        base.OnModelCreating(modelBuilder);
    }
}

The above ways can coexist. As for which one to use and which one to recommend, let's see

Posted by louis567 on Mon, 23 Dec 2019 13:41:03 -0800