Шаблоны T4 и строки подключения в библиотеке классов - PullRequest
7 голосов
/ 05 января 2011

Я использую шаблон , размещенный в этой теме , для генерации перечислений C # из пары таблиц поиска в SQL Server в библиотеке классов, содержащей мой DAL.

В данный моментУ меня есть строка подключения, используемая шаблонами, встроенными в шаблонный файл включения в библиотеку классов.Есть ли удобный способ заставить шаблон захватить строку подключения из файла web.config основного проекта (WAP) без указания физического пути?Или есть лучший способ приблизиться к этому?

Edit

Я также рассмотрел создание сборки SQL CLR, которая возвращает табличную функцию, содержащую содержимое перечисления(который затем будет определен в C #, а не в базе данных), но я не уверен, каким будет снижение производительности.Является ли это существенным или нет, очевидно, будет зависеть от приложения, но я бы не хотел брать на себя ответственность за дурацкий путь, если этот подход лучше всего избегать.

1 Ответ

10 голосов
/ 05 января 2011

Я использовал следующий подход для чтения из web.config при выполнении шаблона T4

<# var path = Host.ResolvePath(@"..\..\www"); #>

, где ..\..\www - это относительный путь к каталогу, где находится мой web.config, относительно того, где выполняется мой шаблон T4

var config = ConfigurationManager.OpenMappedExeConfiguration(
   new ExeConfigurationFileMap { ExeConfigFilename = location +@"\web.config" },
   ConfigurationUserLevel.None);

var connStrings = config.ConnectionStrings;
...