Установить динамическое имя базы данных в 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">
(обратите внимание, что принятый ответ больше не является правильным: этот атрибут переопределял мою строку подключения)