| 

.NET C# Java Javascript Exception

2
Ich bin schier am Verzweifeln :-(

Ich habe VS2010 und will EF6 für eine .NET 4.0 Anwendung benutzen. Mein Datenlayer-Projekt hat folgende App.Config:
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>

<connectionStrings>
<add name="Entities"
connectionString="metadata=res://*/EDM.csdl|res://*/EDM.ssdl|res://*/EDM.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(local)\SQLEXPRESS110;initial catalog=xxxx;persist security info=True;user id=SA;password=******;multipleactiveresultsets=True;App=EntityFramework&quot;"
providerName="System.Data.EntityClient" />
</connectionStrings>


Um die Verbindungsinformationen zu wechseln benutze ich folgenden Code:
Public ReadOnly Property SqlConnectionString As String
Get
With sqlBuilder

.DataSource = ServerName
.InitialCatalog = DatabaseName

If DatabaseUserName.Length = 0 Then
.IntegratedSecurity = True
Else
.IntegratedSecurity = False
.UserID = DatabaseUserName
.Password = DatabasePassword
End If

sqlBuilder.MultipleActiveResultSets = True

End With

Return sqlBuilder.ToString & ";App=EntityFramework"
End Get
End Property

Public ReadOnly Property EntityConnectionString As String
Get
Dim _metaData As String = ""

With entityBuilder
.Provider = ProviderName
.ProviderConnectionString = SqlConnectionString

_metaData = "res://" & DatabaseModelAssembly & "/" & DatabaseModelName & ".csdl|"
_metaData = _metaData & "res://" & DatabaseModelAssembly & "/" & DatabaseModelName & ".ssdl|"
_metaData = _metaData & "res://" & DatabaseModelAssembly & "/" & DatabaseModelName & ".msl"

.Metadata = _metaData
End With

Return entityBuilder.ToString

End Get
End Property

Public Function ConnectionTest() As Boolean
Try

Dim conn As New EntityConnection(EntityConnectionString)
conn.Open()
Console.WriteLine("Just testing the connection.")
conn.Close()

Return True

Catch ex As Exception

Return False

End Try

End Function


Beim "open" dann kommt die Meldung:
error 0152: No Entity Framework provider found for 'System.Data.SqlClient' ADO.NET provider. Make sure the provider is registered in the 'entityFramework' section of the application config file


Mache schon den ganzen Tag an der Sache rum und komme nicht auf die Lösung:

EntityFramework.dll und EntityFramework.SqlServer.dll sind aktuell und im gleichen Verzeichniss wir die Datenmodelle.

Kann es daran liegen, dass VS2010 "mekert", dass die Schemainformationen nicht gefunden werden? Laut soll das aber keine Probleme darstellen

Hat jemand noch eine rettende Idee für´s WE?

lg
und vielen Dank
28.06.2013
MyKey0815 1,6k 2 9
1 Antwort
0
Mein Datenlayer-Projekt hat folgende App.Config:

Und die App.config wird auch geladen? Der Abschnitt sollte eher in die *.config des Startprojektes.

Und was passiert, wenn Du eine SQL-Connection erstellst und diese an den DataContext übergibst?
29.06.2013
lbm1305 849 1 8
lbm1305 849 1 8
Schwierige Sache - es scheint gar nicht möglich zu sein, dass vernüftig mit VS2010 zu erreichen. Hinzukommt, dass ich noch kaum Informationen habe, wie man eine Verbdinung und so herstellt. Das Projekt wurde bis jetzt mit EF 4.4 entwickelt und hat auch funktioniert. Aber der Umstieg auf ein funktionierens EF6 ist wohl nicht möglich
MyKey0815 29.06.2013
Hatte versucht irgentwie das "ConnectionTest" umzubauen, aber schon dazu finde ich nichts, was beschreibt, wie man über den Code die ganze Sache konfigurieren kann. Alle Verweise zeigen immer auf die "generelle" Seite, wo als Beispiel die LoclaDB benutzt wird. Aber was funktionierendes von EF6 und SQL konnte ich noch nicht auftreiben.
MyKey0815 29.06.2013
Deshalb bevorzuge ich persönlich den CodeFirst-Ansatz.
lbm1305 29.06.2013

Stelle deine Connectionstring-Frage jetzt!