2012-06-25 4 views
0

Имена ассоциаций, создаваемые 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 
} 

Предыдущие классы были совершенно симметричными, как они должны быть, но теперь сгенерированные классы полностью асимметричны. Может кто-нибудь объяснить это?

ответ

0

Поскольку, похоже, нет никаких рифм или причин для этого, я создал инструмент командной строки, который обертывает sqlmetal и переписывает имена ассоциаций. Он включен в мою среду с открытым исходным кодом Sasa, и называется sasametal.

Смежные вопросы