具有非标准命名约定的数据库的POCO别名
本文关键字:数据库 别名 POCO 命名约定 非标准 | 更新日期: 2023-09-27 18:28:14
我有一个正在使用的数据库,每个列都命名为"product_id"、"event_tracking_detail_type"等。
它不使用标题大小写,而是全部使用小写,名称之间有_。我已经关闭了代码生成并使用了POCO生成器,但我希望将POCO命名为ProductId、ManufacturerImage(而不是manufacturer_image)。
有没有办法让POCO的名称与数据库中的实际名称不同,比如别名或其他什么?
我的理由是让代码与正确的名称交互,然后再更改数据库的列名。
查看MSDN关于数据注释的文档。可以使用Table
和Column
属性。
[Column(Name="product_id")]
Int32 ProductId;
或者,您可以使用流利的API(这里是示例)
modelBuilder.Entity<ENTITYNAME>()
.Property(entity=>entity.ProductId)
.HasColumnName("product_id")
如果使用T4模板,则可以修改一个函数WriteProprety
,该函数将写出属性。你可以修改它,比如:
void WriteProperty(string accessibility, string type, string name, string getterAccessibility, string setterAccessibility)
{
//Start New Stuff
string[] names = name.Split('_');
names = names.ToList().Select(x => char.ToUpper(x[0]) + x.Substring(1)).ToArray();
string fixedName = string.Join("", names);
//End New Stuff
#>
[Column(Name="<#=name>")]
<#=accessibility#> <#=type#> <#=fixedName#> { <#=getterAccessibility#>get; <#=setterAccessibility#>set; }
<#+
}