Я знаю, что это старо, но вот как я это делаю (мне очень нравится @ Себа, но я этого не пробовал)
Предполагается, что ваш файл 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
- Чтобы обеспечить правильную работу компонента Designer, скопируйте строку подключения в файл app.config для библиотеки классов. Это не будет использоваться отдельно от IDE.
Вот и все.
Вам нужно будет назвать строку подключения одинаковой
По сути, вы заставляете контекст данных игнорировать информацию о соединении, заданную в файле DBML. Использование методов ConfigurationManager будет означать, что он выберет строку подключения из вызывающей сборки.
НТН