1

我刚刚开始在一个新项目中实施 EF CTP 5。在这种情况下,由于数据库命名约定不明确,我的所有数据库字段的命名都与我的 POCO 属性不同。我是否认为映射它的最佳方法是覆盖 OnModelCreating 并拥有这样的代码

    modelBuilder.Entity<Sale>().Property(s => s.ID).HasColumnName("sale_id");
    modelBuilder.Entity<Sale>().Property(s => s.ProductName).HasColumnName("product_name");
    modelBuilder.Entity<Sale>().Property(s => s.ProductPrice).HasColumnName("product_price");
    modelBuilder.Entity<Sale>().Property(s => s.SaleDate).HasColumnName("sale_date");

这很快就会变得非常大,这真的是最好的方法吗?

4

2 回答 2

3

我认为您应该考虑使用新的 CTP5 Column属性。在这种情况下,使用数据注释似乎是比 fluent API 更好的选择。您的销售类将如下面的代码所示:

public class Sale
{
    [Column(Name="sale_id")]
    public int ID { get; set; }

    [Column(Name="product_name")]
    public string ProductName { get; set; }

    [Column(Name="product_price")]
    public string ProductPrice { get; set; }

    [Column(Name="sale_date")]
    public DateTime SaleDate { get; set; }
}
于 2010-12-13T14:48:50.250 回答
1

感谢您的回答

我最终坚持使用我原来的方法,因为我想让实体与数据层分开。

然而,为了使其更易于管理,我将上下文设置为部分类,并使用 MapUsers 或 MapRoles 等私有方法为每个实体创建了一个文件,然后在 OnModelCreating 中我只是调用了这些方法。

于 2011-01-05T09:59:26.743 回答