POCO псевдонимы для базы данных, которая имеет нестандартные соглашения об именах - PullRequest
2 голосов
/ 20 марта 2012

У меня есть база данных, с которой я работаю, каждый столбец имеет имя, например «product_id», «event_tracking_detail_type» и т. Д.

Вместо использования заглавных букв все строчные и имеют _ между именами. Я выключил генерацию кода и использовал генератор POCO, но мне бы хотелось, чтобы POCO были названы как-то по аналогии с ProductId, ManufacturerImage (вместо factory_image).

Есть ли способ, чтобы POCO имели разные имена, чем то, что на самом деле находится в базе данных, например, псевдоним или что-то еще?

Моя причина в том, чтобы код взаимодействовал с собственными именами, а затем изменил имена столбцов для базы данных.

Ответы [ 2 ]

1 голос
/ 20 марта 2012

Взгляните на документацию MSDN по аннотациям данных . Вы можете использовать атрибуты Table и Column.

[Column(Name="product_id")]
Int32 ProductId;

Или вы можете использовать свободный API ( вот образцы )

modelBuilder.Entity<ENTITYNAME>() 
.Property(entity=>entity.ProductId) 
.HasColumnName("product_id")
0 голосов
/ 20 марта 2012

Если вы используете шаблоны 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; }
<#+
}   
...