Я знаю, что это старый, но вот как я это делаю (мне очень нравится способ @Seba, но я этого не пробовал)
Предполагается, что ваш файл DBML находится в собственной библиотеке классов, что, по моему мнению, наиболее удобно при совместном использовании сущностей и доступе к данным на нескольких веб-сайтах и других библиотеках классов. Также предполагается, что вы назвали строку подключения одинаково в каждом проекте. Я использую NAnt, чтобы установить это при развертывании в разных средах.
Я основывал это на верхнем ответе @tvanfosson выше - спасибо этому парню.
- Создайте свой собственный базовый класс, производный от LinqDataContext.
Вот код VB:
Imports System.Configuration
Public Class CustomDataContextBase
Inherits System.Data.Linq.DataContext
Implements IDisposable
Private Shared overrideConnectionString As String
Public Shared ReadOnly Property CustomConnectionString As String
Get
If String.IsNullOrEmpty(overrideConnectionString) Then
overrideConnectionString = ConfigurationManager.ConnectionStrings("MyAppConnectionString").ConnectionString
End If
Return overrideConnectionString
End Get
End Property
Public Sub New()
MyBase.New(CustomConnectionString)
End Sub
Public Sub New(ByVal connectionString As String)
MyBase.New(CustomConnectionString)
End Sub
Public Sub New(ByVal connectionString As String, ByVal mappingSource As System.Data.Linq.Mapping.MappingSource)
MyBase.New(CustomConnectionString, mappingSource)
End Sub
Public Sub New(ByVal connection As IDbConnection, ByVal mappingSource As System.Data.Linq.Mapping.MappingSource)
MyBase.New(CustomConnectionString, mappingSource)
End Sub
End Class
- Откройте файл DBML и в свойствах добавьте указанное выше имя класса к свойству базового класса.
Обратите внимание: если вы поместили класс контекста настраиваемых данных в ту же сборку, просто укажите имя класса, например CustomDataContext.
Если они находятся в разных сборках, используйте полное имя, например MyCo.MyApp.Data.CustomDataContext
- Чтобы убедиться, что конструктор работает правильно, скопируйте строку подключения в файл app.config для библиотеки классов. Он не будет использоваться отдельно от IDE.
Вот и все.
Вам нужно будет назвать свою строку подключения таким же
По сути, вы заставляете контекст данных игнорировать информацию о соединении, установленную в файле DBML. Использование методов ConfigurationManager будет означать, что он получит строку подключения из вызывающей сборки.
HTH
person
Joe Niland
schedule
30.11.2010