Установить динамическое имя базы данных в LINQ to SQL
-
07-07-2019 - |
Вопрос
Я использую LINQ to SQL для подключения к базе данных из моего приложения. Когда я меняю среду с производства на стадию, я могу обновить строку подключения в web.config. Но есть еще одно значение, которое мне нужно обновить при изменении среды. Это имя базы данных. В файле конструктора LINQ to SQL имя базы данных упоминается как атрибут вроде -
[System.Data.Linq.Mapping.DatabaseAttribute(Name="somedbname")]
Как я могу динамически подобрать значение имени из некоторого файла конфигурации?
Любая помощь очень ценится.
Решение
как упомянуто на http://msdn.microsoft. ком / EN-US / библиотека / 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">
(обратите внимание, что принятый ответ больше не является правильным: этот атрибут переопределял мою строку подключения)