2012-04-16 3 views
1

Извините, если это глупый вопрос. Я пишу простое 3-х уровневое приложение ASP Web Forms, как я могу вставить свою строку подключения в свой DAL в LINQ to SQL ClassInject ConStr to Linq to SQL Class в DAL

Я считаю, что это вытаскивает информацию о con из App.Config в DAL

public LNQDataContext() : 
      base(global::bcDAL.Properties.Settings.Default.TM10_ArchiveConnectionString, mappingSource) 
    { 
     OnCreated(); 
    } 

Есть ли способ изменить это на LINQDataContext (string conStr)? Я действительно хочу, чтобы администратор мог установить это в файле web.config (не иметь его жестко закодированного в dll), если он должен будет перемещать вещи вокруг.

Или любые другие проницательные альтернативы приветствуются, спасибо заранее.

ответ

1

Класс DataContext, сгенерированный для вас через DBML-файл, является частичным, поэтому просто расширьте его своим собственным классом, который называется тем же и добавит любой дополнительный конструктор, в котором вы нуждаетесь. Однако я не уверен, почему вы считаете, что строка подключения жестко закодирована с тем, что у вас есть. Перетаскивание таблиц на поверхность DBML из Server Explorer уже добавляет строку подключения к вашему web/app.config. Это то, на что указывает ваш пример global::bcDAL.Properties.Settings.Default.TM10_ArchiveConnectionString.

+0

спасибо, что вы описали, это то, что я пытался сделать без успеха, если его в app.config в DAL он не будет доступен для изменения после компиляции приложения, нет? Следовательно, я хочу, чтобы веб-плеер нажал на значение, вытащенное из web.config. –

+0

. Вы правы - если у вас есть отдельный проект DAL с файлом DBML, то app.config для этого проекта получает строку подключения, которая абсолютно глупа поскольку .dlls не получают app.configs. Но, как говорит kman0, просто скопируйте эту настройку на свой web.config. Но, если вы измените web.config во время выполнения, вы очистите весь пул приложений, поэтому лучше всего перегрузить ваш конструктор. Вам решать. – mattmc3

0

Вы также можете просто скопировать строку соединения из app.config вашего уровня данных в web.config в своем слое презентации. Приложение найдет его в файле web.config после выполнения.