从错误的表列命名 C# 类

本文关键字:错误 | 更新日期: 2023-09-27 18:34:21

到目前为止,我一直使用实体框架和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; }
}

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

从错误的表列命名 C# 类

使用表和列属性。从 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类上的静态方法。此外,在保存数据时,您可以反转该过程,即将域对象映射到实体中。