EF Bootstrapping

Привет всем любителям EF Code First.

Вчера на коленке написал конфигуратор для EF CF во fluent- стиле. Использование выглядит так:

var factory = Configure.WithContext<MyDbContext>("connectionstring") // использовать контекст типа MyDbContext и строку подключения connectionstring
     .AddMappingsFromAssemblyOf<XXX>()  // здесь есть перегрузки, принимающие Type и Assembly. В подключенной сборке находит все реализации EntityTypeConfiguration`1 и ComplexTypeConfiguration`1
     .LazyLoadingEnabled(true) // пример конфигурации контекста
     .BuildDbContextFactory(); // возвращается реализация IDbContextFactory

Назначение - использовать generic context и автонахождение маппингов.

Список методов

public static class Configure
{
    public static DbContextFactoryConfiguration WithContext<TContext>(string connectionString) where TContext : DbContext;

    public static DbContextFactoryConfiguration WithContext(string connectionString);

    public static DbContextFactoryConfiguration WithContext(Type contextType, string connectionString);
}

public class DbContextFactoryConfiguration
{
    public DbContextFactoryConfiguration AddMappingsFromAssembly(Assembly assembly);

    public DbContextFactoryConfiguration AddMappingsFromAssemblyOf(Type type);

    public DbContextFactoryConfiguration AddMappingsFromAssemblyOf<T>();

    public DbContextFactoryConfiguration AutoDetectChangesEnabled(bool value);

    public DbContextFactoryConfiguration LazyLoadingEnabled(bool value);

    public DbContextFactoryConfiguration ProxyCreationEnabled(bool value);

    public DbContextFactoryConfiguration ValidateOnSaveEnabled(bool value);

    public IDbContextFactory BuildDbContextFactory();
}

public interface IDbContextFactory : System.Data.Entity.IDbContextFactory<DbContext>
{
}

Вопросы

  • это будет востребованно?
  • стоит развивать дальше?
  • какие конфигурационные параметры я пропустил?
  • что еще нужно добавить?

  • как вы конфигурируете контекст в EF?

Обсуждение

В гуглгруппе DotNetConf: https://groups.google.com/d/topic/dotnetconf/gx4PqT6xhtM/discussion

UPD

Разместил код на GitHub: https://github.com/hazzik/EFBootstrapper

comments powered by Disqus