Установить динамическое имя базы данных в LINQ to SQL - PullRequest
5 голосов
/ 14 сентября 2009

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

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

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

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

Ответы [ 3 ]

4 голосов
/ 29 сентября 2009

как указано на http://msdn.microsoft.com/en-us/library/system.data.linq.mapping.databaseattribute.name.aspx

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

0 голосов
/ 14 ноября 2017

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

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

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

0 голосов
/ 29 сентября 2009

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

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