В EF 4.2 я не смог найти этого, чтобы сделать это «из коробки», но мне нужно было, чтобы все мои сущности были в другой схеме, поэтому я взломал это, пытаясь сохранить СУШКУ.Он использует тот же базовый механизм множественного числа, что и EF, и переопределения существуют, если сущности должны указывать имя таблицы.
Требуется ссылка на System.Data.Entity.Design
.
public class BaseConfiguration<TEntityType> : EntityTypeConfiguration<TEntityType> where TEntityType : class
{
private readonly static PluralizationService ps = PluralizationService.CreateService(new CultureInfo("en-US"));
public BaseConfiguration() : this(ps.Pluralize(typeof(TEntityType).Name)) { }
public BaseConfiguration(string tableName) : this(tableName, MyContext.Schema) { }
public BaseConfiguration(string tableName, string schemaName)
{
ToTable(tableName, schemaName);
}
}
Я определяюимя схемы через постоянную строку в MyContext
, то есть:
public class MyContext : DbContext
{
public const string Schema = "my";
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new SnapshotConfiguration());
}
}
И конфигурации моих сущностей выглядят так:
public class SnapshotConfiguration : BaseConfiguration<Snapshot>
{
...
}
Предупреждение: мне все еще нужны конфигурации для каждой сущности, которую я хочув правильной схеме - но ее суть может быть принята в другом месте.