• EFCore 2.0的IEntityTypeConfiguration<TEntity>的使用!


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

      OnModelCreating代码:

        

    protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
                base.OnModelCreating(modelBuilder);
    
                modelBuilder.Entity<Class>().ToTable("T_Classs");
    
                modelBuilder.Entity<Teachers>().ToTable("T_Teachers");
    
                //modelBuilder.Entity<Students>()    //这是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<Students>  //继承该接口
        {
            public void Configure(EntityTypeBuilder<Students> 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<Class>().ToTable("T_Classs");
    
                modelBuilder.Entity<Teachers>().ToTable("T_Teachers");
    
                modelBuilder.ApplyConfiguration(new StudentCofig());  //这是将单独的配置类注册到OnModelCreating中
    
                modelBuilder.ApplyConfiguration(new TeacherClassConfig());
                   
    
            }

        

  • 相关阅读:
    poj----1330Nearest Common Ancestors(简单LCA)
    Tarjan--LCA算法的个人理解即模板
    hdu----(4545)魔法串(LCS)
    hdu---(1325)Is It A Tree?(并查集)
    hdu----(1599)最大子矩阵(几何/dp)
    hdu---(1054)Strategic Game(最小覆盖边)
    整理的一些模版LCS(连续和非连续)
    hdu---(4310)Hero(贪心算法)
    hdu----(4308)Saving Princess claire_(搜索)
    hdu------(4302)Holedox Eating(树状数组+二分)
  • 原文地址:https://www.cnblogs.com/ROOKIEDEBUG/p/9289263.html
Copyright © 2020-2023  润新知