我正在使用 EF CodeFirst 生成相当大的模式,包括 TPT 表,例如
[Table("MissingReplacementDongles")]
public class MissingReplacementDongle : ReplacementRentalDongle
{
public virtual bool OriginalStolen { get; set; }
}
public abstract class ReplacementRentalDongle : ConsequentialRentalDongle
{
public virtual Money ReplacementCharged { get; set; }
}
[Table("ConsequentialRentalDongles")]
public abstract class ConsequentialRentalDongle : RentalDongle
{
}
[Table("RentalDongles")]
public abstract class RentalDongle : BaseConstraint
{
public virtual DateTime CurrentExpirationDate { get; set; }
public virtual DateTime? ReturnedDate { get; set; }
}
我一直在针对 SQL Server Express 2008 安装进行开发,这可以完美地生成表,即带有 ReplacementCharged_Id 列的 ReplacementRentalDongles 表,它引用了 Money 表。
但是,当我运行相同的代码,但使用 SQL Server 2008R2 Developer 实例时,生成的表是不同的!在这种情况下,ReplacementCharged_Id 列最终会在“基本”表 BaseConstraint 中生成。
这是 EF 4.3.1 中的错误,因为不同的 SQL Server 版本最终会创建不同的架构?EF 是否与 SQL 2008R2 兼容?