Ошибка дозвукового преобразования в шаблоне T4 из-за одного и того же имени объекта в разных схемах - PullRequest
3 голосов
/ 09 февраля 2012

У меня есть основные шаблоны T4 в дозвуковой для создания моего DAL.Строки подключения, которые у меня есть пользователи, которые имеют выборочный доступ к различным схемам в базе данных.

проблемы возникают, когда я пытаюсь сгенерировать свои частичные классы DAL для пользователя, у которого есть доступ к двум схемам, каждая из которых имеет объект (скажем, таблицу) с одинаковым именем.

, так что, если мой пользователь имеет доступ к MYSCHEMA1 и MYSCHEMA2, и обе эти схемы содержат объект с именем COMMONOBJECT, преобразования в дозвуковом сбое.

вот ошибка, которую я получаю

Running transformation: System.InvalidOperationException: Sequence contains more than one matching element
   at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
   at Microsoft.VisualStudio.TextTemplating1A7026BAC93607B56DDB080E7C2EC2DB.GeneratedTextTransformation.LoadTables()
   at Microsoft.VisualStudio.TextTemplating1A7026BAC93607B56DDB080E7C2EC2DB.GeneratedTextTransformation.TransformText()
   at Microsoft.VisualStudio.TextTemplating.TransformationRunner.RunTransformation(TemplateProcessingSession session, String source, ITextTemplatingEngineHost host, String& result)

Я не хочу удалять один из этих объектов.

есть ли способ настроить subsonic для использования «полностью определенных имен», таких как MYSCHEMA1.COMMONOBJECT, для использования при выполнении преобразований?

1 Ответ

2 голосов
/ 09 февраля 2012

Измените шаблон tt, сначала найдите схему, а затем используйте ее для добавления префикса к объектам в вашем примере - таблицах, например, myschema.employee

...