到目前为止,我已经使用了Entity Framework和SQL Server数据库。所以我可以将我的表名称表示为类名和属性名称,如下所示。
class Product{
public string Id { get; set;}
public string Name { get; set;}
}
表名和列名与我的班级相同。
但是现在我将使用一个使用Postgresql数据库的项目。表名和列名是这样的。
products
,product_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; }
}
这看起来像一个丑陋的命名约定。我该如何解决这个问题?
答案 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
类上的静态方法。此外,在保存数据时,您可以反转该过程,即将域对象映射到实体。