我有一个我正在使用的数据库,每个列都有一个名为“product_id”,“event_tracking_detail_type”等的列。
而不是使用标题案例,它的全部小写并且在名称之间有_。我已经关闭了代码生成并使用了POCO生成器,但我希望将POCO命名为ProductId,ManufacturerImage(而不是manufacturer_image)。
有没有办法让POCO拥有与数据库中实际存在的名称不同的名称,如别名或其他内容?
我的理由是让代码与正确的名称进行交互,然后改变数据库的列名。
答案 0 :(得分:1)
看看the MSDN documentation on data annotations。您可以使用Table
和Column
属性。
[Column(Name="product_id")]
Int32 ProductId;
或者,您可以使用fluent API(here are samples)
modelBuilder.Entity<ENTITYNAME>()
.Property(entity=>entity.ProductId)
.HasColumnName("product_id")
答案 1 :(得分:0)
如果您使用的是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; }
<#+
}