EFCore 2.0的IEntityTypeConfiguration的使用!

通过新建一个类来实现  IEntityTypeConfiguration 这个接口,将EFCore中的实体配置写在单独的配置类中,便于修改和维护。

  OnModelCreating代码:

    

protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            modelBuilder.Entity().ToTable("T_Classs");

            modelBuilder.Entity().ToTable("T_Teachers");

            //modelBuilder.Entity()    //这是EF 2.0之前版本将配置写在OnModelCreating方法中的写法
            //    .ToTable("T_Students")
            //    .HasOne(s => s.Class)
            //    .WithMany(e => e.Students)
            //    .HasForeignKey(e => e.ClassId);

            modelBuilder.ApplyConfiguration(new StudentCofig());  //这是将单独的配置类注册到OnModelCreating中

            modelBuilder.ApplyConfiguration(new TeacherClassConfig());
               

        }

  新建的实体配置类:

  

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using MyEF2.Models;
using System;
using System.Collections.Generic;
using System.Text;

namespace MyEF2.Configuration
{
    public class StudentCofig : IEntityTypeConfiguration  //继承该接口
    {
        public void Configure(EntityTypeBuilder builder)
        {
            builder.ToTable("T_Students")
                .HasOne(s => s.Class)
                .WithMany(e => e.Students)
                .HasForeignKey(e => e.ClassId);
        }
    }
}

  最后在MyDbContext中的OnModelCreating方法中注册:

    

protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            modelBuilder.Entity().ToTable("T_Classs");

            modelBuilder.Entity().ToTable("T_Teachers");

            modelBuilder.ApplyConfiguration(new StudentCofig());  //这是将单独的配置类注册到OnModelCreating中

            modelBuilder.ApplyConfiguration(new TeacherClassConfig());
               

        }

 

    

你可能感兴趣的:(EFCore 2.0的IEntityTypeConfiguration的使用!)