Я сгенерировал модель EF4 из существующей базы данных SQL Server 2008 R2.Все работает нормально, когда я подключаюсь к этой базе данных.Теперь я хотел подключиться к базе данных SQL Server Compact Edition 4.0, которую я сгенерировал из существующей базы данных SQL Server (и обновил ее с 3.5 до 4.0).Всякий раз, когда я хочу подключиться к этой базе данных, я получаю следующую ошибку:
Объект типа "System.Data.SqlServerCe.SqlCeConnection" не может быть преобразован в тип "System.Data.SqlClient.SqlConnection."
Следующие два свойства определяют контекст DataModel, который я использую для доступа к данным:
Public ReadOnly Property EntityConnection As String
Get
' Supply the additional values.
' Specify the provider name, server and database.
Dim providerName As String = If(DienstplanEnvironment.IsCompact, "System.Data.SqlServerCe.4.0", "System.Data.SqlClient")
' Build the SqlConnection connection string.
' Initialize the EntityConnectionStringBuilder.
Const STR_DataModelName As String = "DPModel" ' <= Name des Daten-Modells im Projekt
Const STR_SubFolder As String = "DataModels" ' <- Unterverzeichnis des Datenmodells im Projekt
Dim Metadata As String = String.Format("res://*/{0}.{1}.csdl|res://*/{0}.{1}.ssdl|res://*/{0}.{1}.msl", STR_SubFolder, STR_DataModelName)
Dim entityBuilder As New EntityClient.EntityConnectionStringBuilder() With {.Provider = providerName,
.ProviderConnectionString = SqlConnectionString,
.Metadata = Metadata}
Return entityBuilder.ToString
End Get
End Property
Public ReadOnly Property DienstplanEntities() As DienstplanEntities
Get
Return New DienstplanEntities(EntityConnection)
End Get
End Property
Поэтому, когда я пытаюсь получить некоторые данные, например:
Private Sub ReadBenutzerWindowPropertiesFromContext(BenutzerId As Integer, ByVal Force As Boolean)
If _blnWinPropLoad Or Force Then
Using Context = My.DienstplanEntities
For Each item In From e In Context.ProfileSet Where e.USID = BenutzerId Order By e.WinKey Select e
With WindowProperties.Item(ProfileHandling.ConvertWinKey(item.WinKey))
.ActualLocation = New Point(item.WinX, item.WinY)
.ActualSize = New Size(item.WinW, item.WinH)
.FormWindowState = CType(item.WinState, Windows.Forms.FormWindowState)
.IsLoaded = item.isvisible
End With
Next
End Using
End If
End Sub
Я получу это сообщение об ошибке.Насколько я понимаю, модель EF4 не зависит от конкретного поставщика (не имеет никакого смысла).Так где я ошибся?Нужно ли создавать другую модель EF4 из базы данных SQL Server CE?