I'm using EF CodeFirst to generate quite a large schema including TPT tables, e.g.
[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; }
}
I've been developing against a SQL Server Express 2008 installation, and this generates the tables perfectly, i.e a ReplacementRentalDongles table with a ReplacementCharged_Id column, which references a Money table.
However, when I run the same code, but using a SQL Server 2008R2 Developer instance, the tables generated are different! In this case, the ReplacementCharged_Id column ends up being generated in the 'base' table BaseConstraint.
Is this a bug in EF 4.3.1, in that a different SQL Server version ends up creating a different Schema? Is EF compatible with SQL 2008R2 ?