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

        

  • 相关阅读:
    spring
    23种设计模式
    get getline
    ping
    Android四大组件
    C++数据结构
    玩转windows便签
    [JavaScript]再谈 this
    [JavaScript]面向对象编程浅析之XJB讲
    [JavaScript]MVC浅析
  • 原文地址:https://www.cnblogs.com/ROOKIEDEBUG/p/9289263.html
Copyright © 2011-2022 走看看