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

StackOverflow https://stackoverflow.com/questions/1421224

  •  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">

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top