我正在尝试使用 Entity Framwork 4.1、Code First 和 Fluent API 映射实体。我的场景是我正在使用抽象类实现状态模式。查看我的实现:
//我的合约
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”无效。密钥的所有部分都必须不可为空。
任何人都可以帮助我吗?
谢谢,
此致。
米歇尔·马加良斯