【问题标题】:Entity Framework 4.3.1 Table Per Type Code First generates a different schema in SQL Server Express 2008 and SQL Server 2008R2Entity Framework 4.3.1 Table Per Type Code First 在 SQL Server Express 2008 和 SQL Server 2008R2 中生成不同的架构
【发布时间】:2012-08-20 15:15:49
【问题描述】:

我正在使用 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 列最终会在“base”表 BaseConstraint 中生成。

这是 EF 4.3.1 中的错误,因为不同的 SQL Server 版本最终会创建不同的架构? EF 是否与 SQL 2008R2 兼容?

【问题讨论】:

    标签: entity-framework ef-code-first sql-server-2008-r2 entity-framework-4.3 entity-framework-4.3.1


    【解决方案1】:

    只是为了让大家知道我设法解决了这个问题 - 只需升级到 Entity Framework 5.0(仅在两周前发布 - http://blogs.msdn.com/b/adonet/archive/2012/08/15/ef5-released.aspx

    EF 5.0 实现了在 .NET 4.5 上运行时可用的新功能(我们不是,我们在 .NET 4.0 上)。但是,EF 5 确实也可以在 .NET 4 上运行,当在 .NET 4 上运行时,它实际上似乎也是 EF 4.3.1 的错误修复汇总。

    短版 - 将 EF DLL 升级到 5.0(通过 NuGet),现在为 SQL 2008 Express 和 2008R2 上的新数据库生成相同(正确!)架构,效果很好!

    一个小警告 - 我必须使用额外的 using 指令更新我的源代码,因为 [Table][InverseProperty] 等属性已移至 System.ComponentModel.DataAnnotations.Schema 命名空间(它们位于 System.ComponentModel.DataAnnotations 命名空间中)英孚 4.3.1)

    简单的解决方案 - 只需升级!

    【讨论】:

      猜你喜欢
      • 2011-05-06
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多