私はEntity Framework 5 code first
を使用しています。私のデータベースには、2つのテーブル、AvailPayPeriods
とAvailPayPeriodsWeekly
があります。どちらも同じように見える:Entity Frameworkコードでタイプごとに複数のオブジェクトセットを構成する方法
Period datetime not null
これらの2つのテーブルは、私は2の1のいずれかを表すために以下のクラスを作成することにした自然の中で同一であるため:
public class PayPeriod : IEntity
{
public int Id { get; set; }
public DateTime Period { get; set; }
}
私が設定するために苦労しています2. I自分のデータベースコンテキストクラスで、次があります。
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
}
マイWeeklyPayPeriodConfiguration
クラス:
class WeeklyPayPeriodConfiguration : EntityTypeConfiguration<PayPeriod>
{
internal WeeklyPayPeriodConfiguration()
{
this.ToTable("AvailPayPeriodsWeekly");
}
}
私は、私は次のエラーを取得する週給期間取り戻すために、私のリポジトリを呼び出します。
Multiple object sets per type are not supported. The object sets 'WeeklyPayPeriods' and 'MonthlyPayPeriods' can both contain instances of type 'ePaySlips.DomainModel.Entities.PayPeriod'.
私は、それぞれのテーブルに2をマッピングするにはどうすればよいですか?
WeeklyPayPeriod
とMonthlyPayPeriod
と呼ばれるクラスを別々に作成する必要がありますか?
public class MonthlyPayPeriod : PayPeriod
{
}
public class WeeklyPayPeriod : PayPeriod
{
}
をしてまで、あなたのDbContextを改正:
「Discriminator」フィールドを避けるように、PayPeriodクラスを抽象クラスとしてマークすることもできます。具体的な表(TPC)を参照してください。http://www.entityframeworktutorial.net/code-first/inheritance-strategy-in-code -first.aspx – Adi