从坏表列中命名C#类

时间:2014-12-16 19:32:41

标签: c# entity-framework

到目前为止,我已经使用了Entity Framework和SQL Server数据库。所以我可以将我的表名称表示为类名和属性名称,如下所示。

class Product{ 
      public string Id { get; set;} 
      public string Name { get; set;} 
}

表名和列名与我的班级相同。

但是现在我将使用一个使用Postgresql数据库的项目。表名和列名是这样的。

  • productsproduct_categories(小写)
  • product_id, product_name, category_id,....

所以我不想使用这样的类名:

class products { 
      public string product_id { get; set; }
      public string product_name { get; set; }
      public string category_id { get; set; }
}

这看起来像一个丑陋的命名约定。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:6)

使用表和列属性。来自MSDN example

[Table("InternalBlogs")]
public class Blog
{   
    [Column("BlogDescription", TypeName="ntext")]
    public String Description {get;set;}
}

答案 1 :(得分:0)

一种常见的方法是将实体映射到您使用标准C#约定命名的域类。

因此,您映射到的表product_id, product_name, categori_id, ..

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Category { get; set; }
}

然后创建一个映射器助手,将实体转换为域对象:

public Product ProductMapper(EntityProduct entity)
{
    return new Product
    {
        Id = entity.product_id,
        Name = entity.product_name,
        Category = entity.category_id,
    }
}

我请您决定一个映射器是否应该是一个单独的辅助类,Product类上的静态方法。此外,在保存数据时,您可以反转该过程,即将域对象映射到实体。