Имена ассоциаций, создаваемые sqlmetal, были источником большого разочарования. Иногда ассоциация - это просто имя столбца с «Id», снятое с конца, иногда оно генерирует имя ассоциации, основанное на имени ограничения внешнего ключа.Как sqlmetal генерирует имена ассоциаций?
Я просто не могу понять, какие шаги он использует для создания этих имен, а недавнее изменение схемы радикально изменило имена ассоциаций еще раз, поэтому я хотел бы получить представление об этом.
У меня есть две таблицы, которые ссылаются друг на друга в какой-то цепочке. Что-то вроде этого:
class In
{
int Id;
EntityRef<Out> Yields; // YieldsId => FK_Out_Source
EntitySet<Out> In_Source; // FK_In_Source
}
class Out
{
int Id;
EntityRef<In> Yields; // YieldsId => FK_In_Source
EntitySet<In> Out_Source; // FK_Out_Source
}
Это были классы до изменения схемы, где была дополнительно FK поле между В и из таблиц. После удаления этого поля, SQLMetal теперь генерирует следующее:
class In
{
int Id;
EntityRef<Out> Yields; // YieldsId => FK_Out_Source
EntitySet<Out> Out; // FK_In_Source
}
class Out
{
int Id;
EntityRef<In> In; // YieldsId => FK_In_Source
EntitySet<In> Out_Source; // FK_Out_Source
}
Предыдущие классы были совершенно симметричными, как они должны быть, но теперь сгенерированные классы полностью асимметричны. Может кто-нибудь объяснить это?