Używam Entity Framework 5 code first
. W mojej bazie danych mam 2 tabele, AvailPayPeriods
i AvailPayPeriodsWeekly
. Obaj wyglądają tak samo:Jak skonfigurować wiele zestawów obiektów dla każdego typu w kodzie Entity Framework najpierw
Period datetime not null
Ponieważ te 2 stoły są identyczne w naturze zdecyduję się utworzyć następujące klasy do reprezentowania albo 1 z 2:
public class PayPeriod : IEntity
{
public int Id { get; set; }
public DateTime Period { get; set; }
}
jestem stara się skonfigurować 2. mam następujących w moim klasy kontekstu bazy danych:
public DbSet<PayPeriod> WeeklyPayPeriods { get; set; }
public DbSet<PayPeriod> MonthlyPayPeriods { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new WeeklyPayPeriodConfiguration());
// Haven't yet created the configuration file for monthly pay periods
}
Moja WeeklyPayPeriodConfiguration
klasa:
class WeeklyPayPeriodConfiguration : EntityTypeConfiguration<PayPeriod>
{
internal WeeklyPayPeriodConfiguration()
{
this.ToTable("AvailPayPeriodsWeekly");
}
}
Kiedy zadzwonić do mojego repozytorium wrócić tygodniowe okresy płac pojawia się następujący błąd:
Multiple object sets per type are not supported. The object sets 'WeeklyPayPeriods' and 'MonthlyPayPeriods' can both contain instances of type 'ePaySlips.DomainModel.Entities.PayPeriod'.
Jak mogę zmapować 2 do odpowiednich tabel?
Czy powinienem raczej utworzyć oddzielne klasy o nazwach WeeklyPayPeriod
i MonthlyPayPeriod
?
Możesz oznaczać klasę PayPeriod jako abstrakt, aby uniknąć pola Discriminator, patrz Tabela na klasę Concrete (TPC): http://www.entityframeworktutorial.net/code-first/inheritance-strategy-incode -first.aspx – Adi