Entity Framwork 4.1、Code First、FluentAPIを使用してエンティティをマッピングしようとしています。私のシナリオは、抽象クラスを使用して状態パターンを実装していることです。私の実装を参照してください:
//私の契約
public abstract class SaleStatus
{
public int IdSaleStatus { get; set; }
public string Description { get; set; }
public abstract void ChangeTo(Sale sale, SaleStatus saleStatus);
}
public class SaleStatusBooked : SaleStatus
{
public SaleStatusBooked()
{
this.IdSaleStatus = 1;
Description = "Reservado";
}
public override void ChangeTo(Sale sale, SaleStatus newStatus)
{
if (!(newStatus is SaleStatusPaid) || (!(newStatus is SaleStatusTimeOut)))
throw new BusinessException("salestatus");
sale.SetStatus(newStatus);
}
}
public class SaleStatusPaid : SaleStatus
{
public SaleStatusPaid()
{
this.IdSaleStatus = 2;
Description = "Pago";
}
public override void ChangeTo(Sale sale, SaleStatus newStatus)
{
if (!(newStatus is SaleStatusCancelled) || (!(newStatus is SaleStatusNotResolved)) || (!(newStatus is SaleStatusCriticalError)))
throw new BusinessException("salestatus");
sale.SetStatus(newStatus);
}
}
そして今、SaleStatusの私の現在のマッピング:
public class SaleStatusMap: EntityTypeConfiguration<SaleStatus>
{
public SaleStatusMap()
{
ToTable("SaleStatus");
HasKey(ss => ss.IdSaleStatus);
Map<SaleStatusBooked>(pk => pk.Requires("IdSaleStatus").HasValue(1));
Map<SaleStatusPaid>(pk => pk.Requires("IdSaleStatus").HasValue(2));
}
}
プロジェクトを実行すると、次のメッセージが表示されます。
指定されたスキーマが無効です。エラー:(107,6):エラー0075:キーパーツ:タイプSaleStatusの「IdSaleStatus」が無効です。キーのすべての部分はnull許容でない必要があります。
誰でも私を助けることができますか?
ありがとう、
よろしくお願いします。
ミシェル・マガリャエス