.net 4.5 に変換されたプロジェクトに苦労しています。
私はこのようないくつかの機能を持っています:
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 に変換すると、SDCBLonenEntities が ObjectContext から継承されなくなり、DbContext から継承されるため、エラーが発生します。
以前は、接続文字列を渡すことができるコンストラクターが EF によって自動的に作成されていました。ソリューション構成 (デバッグ/リリース) に応じて異なる接続文字列を使用するため、これは非常に簡単です。
EF5 では、コンストラクターは接続文字列を受け入れなくなりました。エンティティの部分クラスを作成し、独自のコンストラクターを作成しようとしましたが、これを機能させることができません:
Partial Public Class SDWMasterSDWDBEntities
Inherits DbContext
Public Sub New(sConnString As String)
MyBase.New(sConnString)
End Sub
End Class
別のプロジェクトでは、ソリューション構成ごとに異なる app.config ファイルを使用するように Project-file を調整しましたが、これは維持するのが面倒で、私にとってはクリーンなソリューションではありませんでした。
私の質問は次のとおりです。自分の個人的な接続文字列で 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'" #そうしないと 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