EF 4.1 RTM - EntityTypeConfiguration

Posted

技术标签:

【中文标题】EF 4.1 RTM - EntityTypeConfiguration【英文标题】: 【发布时间】:2011-04-19 15:38:58 【问题描述】:

我一直在为每个实体使用带有专用映射类的 EF Code First CTP5,如下所示:

public class UserMapping : EntityTypeConfiguration<User>

    public UserMapping()
    
        ToTable("Users");

        HasKey(t => t.ID);
        Property(t => t.ID).HasColumnName("user_id");

        Property(t => t.Name).HasColumnName("name");
    

并按照 Jonas Cannehag 在此处描述的方式加载它们: http://areaofinterest.wordpress.com/2010/12/08/dynamically-load-entity-configurations-in-ef-codefirst-ctp5/

但这在 RTM 中不起作用,我无法弄清楚如何使用专用映射类。你? :-)

【问题讨论】:

【参考方案1】:
public class DataContext : DbContext

  ...

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  
            modelBuilder.Configurations.Add(new UserMapping());     
            base.OnModelCreating(modelBuilder);
  

动态版本(在投入生产之前可能应该进行广泛的测试)

protected override void OnModelCreating(DbModelBuilder modelBuilder)

            var typesToRegister =
                Assembly.GetExecutingAssembly().GetTypes().Where(
                    type =>
                    type.BaseType.IsGenericType &&
                    type.BaseType.GetGenericTypeDefinition() == typeof (EntityTypeConfiguration<>));

            foreach (object configurationInstance in typesToRegister.Select(Activator.CreateInstance))
            
                modelBuilder.Configurations.Add((dynamic) configurationInstance);
            

            base.OnModelCreating(modelBuilder);
        

【讨论】:

在我看来并没有太大的活力。 更新假设您的映射与 DbContext 和 Executing 程序集位于同一程序集中。如果没有,您可以添加/删除 Where 子句。

以上是关于EF 4.1 RTM - EntityTypeConfiguration的主要内容,如果未能解决你的问题,请参考以下文章

EF Core 迁移过程遇到EF Core tools version版本不相符的解决方案

linux 系统tomcat定时重启

EF 4.1 从存储过程返回结果

EF 4.1 代码优先关系表

EF 4.1 复杂关系的实体映射

使用EF 4.1的DbContext的方法大全