从错误的表列命名 C# 类
本文关键字:错误 | 更新日期: 2023-09-27 18:34:21
到目前为止,我一直使用实体框架和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; }
}
这看起来像一个丑陋的命名约定。如何解决此问题?
使用表和列属性。从 MSDN 示例:
[Table("InternalBlogs")]
public class Blog
{
[Column("BlogDescription", TypeName="ntext")]
public String Description {get;set;}
}
一种常见的方法是将实体映射到使用标准 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
类上的静态方法。此外,在保存数据时,您可以反转该过程,即将域对象映射到实体中。