Установить динамическое имя базы данных в LINQ to SQL

Я использую LINQ to SQL для подключения к базе данных из моего приложения. Когда я меняю среду с производства на стадию, я могу обновить строку подключения в web.config. Но есть еще одно значение, которое мне нужно обновить при изменении среды. Это имя базы данных. В файле конструктора LINQ to SQL имя базы данных упоминается как атрибут

[System.Data.Linq.Mapping.DatabaseAttribute(Name="somedbname")]

Как я могу подобрать значение имени динамически из некоторого файла конфигурации?

Любая помощь очень ценится.

3 ответа

Решение

Как упомянуто на http://msdn.microsoft.com/en-us/library/system.data.linq.mapping.databaseattribute.name.aspx

"Имя базы данных используется только в том случае, если в самом соединении не указано имя базы данных". так что вы можете удалить этот атрибут, и все будет работать нормально!

Я использовал класс-оболочку для обеспечения контекста в соответствии с

public DataContext Context = new DataContext(SqlConnectionString); //much simplified

Я исправил эту проблему, отредактировав файл.dbml вне Visual Studio (кажется, что дизайнер не разрешает доступ к DatabaseAttribute) и избавившись от свойства name здесь:

<Database Name="BadName" Class="OutputDataContext" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007">

(обратите внимание, что принятый ответ больше не является правильным: этот атрибут переопределял мою строку подключения)

Другие вопросы по тегам