Entity Framework 一次加载许多个 Fluent API 映射

可通过多种方法来指定模型的 Fluent 映射(从类到数据库)。

1.直接在 DbContext 类的 OnModel­Creating 方法中进行映射,如下所示:

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<XsreAdminData>().Property(p => p.LoginTime).HasPrecision(18, 0);
            modelBuilder.Entity<XsreAdminData>().Property(p => p.LoginIp).HasPrecision(18, 0);
        }

 2.如果有很多映射,可按类型将它们组织到各个 EntityTypeConfiguration 类中,再使用代码将这些类添加到模型生成器中,如下所示:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();//移除复数表名的契约      
            modelBuilder.Conventions.Remove<IncludeMetadataConvention>();//防止黑幕交易 要不然每次都要访问 EdmMetadata这个表 

            modelBuilder.Configurations.Add(new Mapping.XsreAdminDataMap());
           
        }

 3.如果对于许多实体有大量映射,则 OnModelCreating 中会有许多重复的 modelBuilder.Configurations.Add 方法。 为了从这种枯燥的工作中解放出来,您现在可以只用一个方法从给定程序集加载所有 EntityTypeConfiguration。 这里,我使用新的 AddFromAssembly 方法来加载在正在运行的应用程序的执行程序集中指定的配置:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();//移除复数表名的契约      
            modelBuilder.Conventions.Remove<IncludeMetadataConvention>();//防止黑幕交易 要不然每次都要访问 EdmMetadata这个表 

            modelBuilder.Configurations.AddFromAssembly(Assembly.GetExecutingAssembly());
        }

 这种方法的一个出色功能是,它不受将要加载的配置的范围限制。 甚至可以将自定义 EntityTypeConfiguration 类标记为私有,该方法会找到这些类。 此外,AddFromAssembly 也理解 EntityTypeConfiguration 中的继承层次结构。

小弟不才,如有错误,请各大大牛指点。

本群提供ASP.NET MVC,EF,LINQ,WEB API技术支持,不在乎人多,在乎人精。
ASP.NET MVC群 171560784  
诚邀各路高手、初学者加入。

原文地址:https://www.cnblogs.com/kezhiping/p/3860667.html