Мы используем Entity Framework Core для большого проекта с дизайном на основе базы данных. Мы используем команду «scaffold» для генерации сущностей из базы данных. Другими словами, мы делаем что-то подобное в менеджере пакетов NuGet:
Scaffold-DbContext "Server=foo;Database=bar;" Microsoft.EntityFrameworkCore.SqlServer -Context Fubar -Force
В общем, это замечательная работа по созданию классов сущностей для нас.
Но есть одно раздражение. У Microsoft есть нечто, называемое InverseProperty Attribute для обозначения обратных связей. Таким образом, если у вас есть таблица SQL типа Node
, с ParentId
, указывающей на ту же таблицу, сгенерированный код выглядит так:
public class Node {
public Guid ParentId { get; set; }
public Node Parent { get; set; }
public ICollection<Node> InverseParent { get; set; } // the name is annoying
}
Я понимаю, почему Microsoft здесь нужна конвенция. Они не знают, какими будут имена свойств, и им нужен способ инвертировать их при создании соответствующих свойств навигации.
Но на практике для нас свойство, которое становится инвертированным, - Parent
. И поэтому время от времени мы видим InverseParent
, InverseParentFoo
и тому подобное. Было бы значительно лучше, если бы сгенерированные имена были Children
, ChildFoos
и т. Д.
Мы регенерируем наши сущности довольно часто. Если бы выбор был между введением инструмента и жизнью с глупым именем, мы, вероятно, решили бы жить с глупым именем.
Есть предложения по изменению сгенерированного имени?