.net 4.5로 변환 된 프로젝트에 어려움을 겪고 있습니다.EF5에서 동적으로 연결 문자열을 전달하는 방법
나는 다음과 같은 몇 가지 기능을 가지고 있습니다 :
Public Shared Function Load(iJaar As Integer, iKwartaal As Integer) As List(Of LoonDetail_121)
Dim oLoonDetails As New List(Of LoonDetail_121)
Try
Dim oDB As New SDWMasterSDWDBEntities(DBConnections.ConnStringPrisma)
Dim dStartDate As New Date(iJaar, ((iKwartaal - 1) * 3) + 1, 1)
Dim dEndDate As New Date(iJaar, ((iKwartaal - 1) * 3) + 4, 1)
oLoonDetails = oDB.LoonDetail_121.Where(Function(x) x.EindPeriode_121 >= dStartDate And
x.EindPeriode_121 < dEndDate).ToList
Catch ex As Exception
Throw New Exception(GetCurrentMethod.Name & " " & ex.Message)
End Try
Return oLoonDetails
End Function
내가 EF5에이 기능을 변환
, 내 SDCDBLonenEntities이 된 ObjectContext에서 더 이상 상속되지 않기 때문에, 오류가 발생할 수 있지만 DbContext에서 상속됩니다.이전에는 EF가 자동으로 연결 문자열을 전달할 수있는 생성자를 만들었습니다. 내 솔루션 구성 (디버그/릴리스)에 따라 다른 연결 문자열을 사용하기 때문에 매우 쉽습니다.
EF5에서 생성자는 ConnectionString을 더 이상 허용하지 않습니다. 나는 내 엔터티의 부분 클래스를 생성하고, 내 자신의 생성자를 만들려고하지만 나는이 작업 얻을 수 없습니다 : 다른 프로젝트에 대한
Partial Public Class SDWMasterSDWDBEntities
Inherits DbContext
Public Sub New(sConnString As String)
MyBase.New(sConnString)
End Sub
End Class
을, 나는 다른의 app.config를 사용하여 내 프로젝트 파일을 적용 파일을 각각의 솔루션 구성에 맞게 만들었지 만, 그것은 유지해야 할 피타이며 깨끗한 솔루션이 아닙니다.
내 질문은 : 어떻게 내 개인 Connectionstrings 함께 EF5 사용할 수 있습니까?
이러한 그런데 내 연결 문자열은 다음과 같습니다
#If DEBUG Then Friend ConnStringSDW As String = "metadata=res://*/Entities.SDWDB.csdl|res://*/Entities.SDWDB.ssdl|res://*/Entities.SDWDB.msl;provider=System.Data.SqlClient;provider connection string='data source=SDWDB01\SDWSQL;initial catalog=SDWDB_DEV;persist security info=True;user id=usr;password=pwd;multipleactiveresultsets=True;App=EntityFramework'" #Else Friend ConnStringSDW As String = "metadata=res://*/Entities.SDWDB.csdl|res://*/Entities.SDWDB.ssdl|res://*/Entities.SDWDB.msl;provider=System.Data.SqlClient;provider connection string='data source=SDWDB01\SDWSQL;initial catalog=SDWDB_PROD;persist security info=True;user id=usr;password=pwd;multipleactiveresultsets=True;App=EntityFramework'" #End If
와 나는 오류를 얻을, 나는이 기능을 실행하면 "엔티티 타입 SDW_USERS_MASTER이 현재 컨텍스트에 대한 모델의 일부가 아닙니다."
Public Shared Function LoadAll() As List(Of SDW_USERS_MASTER)
Dim oUsers As New List(Of SDW_USERS_MASTER)
Try
Using oDB As New SDWMaster.SDWMasterSDWDBEntities(DBConnections.ConnStringSDW)
oUsers = (From tmpUsers In oDB.SDW_USERS_MASTER
Select tmpUsers).ToList.OrderBy(Function(x) x.Login).ToList
End Using
Catch ex As Exception
Debug.Print(ex.Message)
Throw New Exception(GetCurrentMethod.Name & " " & ex.Message)
End Try
Return oUsers
End Function
은 이미 다음을 발견 : http://visualstudiogallery.msdn.microsoft.com/92c0129e-40dc-488c-a836-7e30846dfb30 ? SRC = VSIDE이지만 자동 생성 코드가 생성되는 방식 만 변경됩니다. 나는 이것이 "이전 방식으로 돌아가고 있기 때문에"아직 시도하지 않았으며 Microsoft는 조언을 제공하지 않습니다 ... –
데이터베이스 스키마가 동일하면 디버그 및 릴리스 웹을 사용할 수 있어야합니다. 또는 app configs는 db가 가리키는 db를 변경합니다. – jfin3204