EF 4.1 RTM - EntityTypeConfiguration - PullRequest
6 голосов
/ 19 апреля 2011

Я использую 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");
    }
}

И загружаю их так, как здесь описывает Джонас Кеннехаг: http://areaofinterest.wordpress.com/2010/12/08/dynamically-load-entity-configurations-in-ef-codefirst-ctp5/

Но в RTM это не работает, и я не смог понять, как использовать выделенные классы отображения. У тебя есть? : -)

1 Ответ

16 голосов
/ 19 апреля 2011
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);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...