Я использую 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, и это отлично генерирует таблицы, то есть таблицу ReplacementRentalDongles со столбцом ReplacementCharged_Id, который ссылается на таблицу Money.
Однако, когда я запускаю тот же код, но с использованием экземпляра SQL Server 2008R2 Developer, сгенерированные таблицы отличаются! В этом случае столбец ReplacementCharged_Id в конечном итоге создается в «базовой» таблице BaseConstraint.
Является ли это ошибкой в EF 4.3.1, поскольку другая версия SQL Server приводит к созданию другой схемы? Совместим ли EF с SQL 2008R2?