Chúng tôi có hai cơ sở dữ liệu, DEV và STAGING. Chúng hầu như giống hệt nhau. Tôi có một thẻ cài đặt ứng dụng trong Web.Config gọi nó là "chế độ", và hai mục kết nối chuỗi.LinqToSql dbml tự động chuyển đổi chuỗi kết nối
Nếu chế độ = DEV Tôi muốn sử dụng ConnectionString 1 nếu không sử dụng ConnectionString 2. Điều này hoạt động tốt ở một số phần của ứng dụng, nhưng dbml dường như không chuyển đổi chuỗi kết nối. Tôi đang sử dụng chức năng này bên trong một lớp tiện ích
Public Function GetConnectionString() As String
Dim connectionStringToGet = String.Empty
Select Case GetCurrentApplicationMode()
Case "DEV"
connectionStringToGet = "Dev"
Case "STAG"
connectionStringToGet = "Staging"
Case "PROD"
connectionStringToGet = "Production"
End Select
Return ConfigurationManager.ConnectionStrings(connectionStringToGet).ConnectionString
End Function
này làm việc cho vô số các procs được lưu trữ trong ứng dụng của di sản này, nhưng dbml, dường như luôn luôn sử dụng chuỗi kết nối Staging.
Khi tôi xem các thuộc tính của dbml, tôi thấy rằng nó được cứng mã hoá để connectionstring Staging, nhưng tôi nghĩ rằng tôi đã overridding này bằng cách thay đổi designer.vb cho dbml như thế này
Public Sub New()
MyBase.New(Utilities.GetConnectionString(), mappingSource)
OnCreated
End Sub
Public Sub New(ByVal connection As String)
MyBase.New(connection, mappingSource)
OnCreated
End Sub
Public Sub New(ByVal connection As System.Data.IDbConnection)
MyBase.New(connection, mappingSource)
OnCreated
End Sub
Public Sub New(ByVal connection As String, ByVal mappingSource As System.Data.Linq.Mapping.MappingSource)
MyBase.New(connection, mappingSource)
OnCreated
End Sub
Public Sub New(ByVal connection As System.Data.IDbConnection, ByVal mappingSource As System.Data.Linq.Mapping.MappingSource)
MyBase.New(connection, mappingSource)
OnCreated
End Sub
Có điều gì tôi có thể làm để buộc dbml sử dụng đúng chuỗi kết nối dựa trên mục nhập Web.config không?
Tôi không sử dụng VB theo lựa chọn. Tôi là một anh chàng C#. Ứng dụng cụ thể này được mã hóa bằng VB.NET và .NET 1.1. Chúng tôi đã đề xuất viết lại nó trong C# và do các ràng buộc về thời gian đã bị bắn hạ. – Hcabnettek
Đây là cách tôi làm điều đó – mattruma
Điều này làm việc tuyệt vời !!! Tôi đã đi các phương pháp nhà máy và cập nhật tất cả mọi thứ để Dim db như myDataContext = myDataContext.Create Tôi đoán chia sẻ tương tự như C# tĩnh như là phương pháp hiển thị trong Intellisense Cảm ơn vì giải pháp tuyệt vời !! – Hcabnettek