2010-07-14 10 views
1

Nous essayons de construire dynamiquement une EntityConnection de sorte que différents utilisateurs se connectent à des bases de données differnet déterminées au moment de l'exécution. Pour ce faire, nous testons le code trouvé ici: http://msdn.microsoft.com/en-us/library/bb738533.aspx. Nous avons mis en place ce ci-dessous:Entity-Framework EntityConnection MetaData Problème

' Specify the provider name, server and database. 
Dim providerName As String = "System.Data.SqlClient" 
Dim serverName As String = "OurDBServerName" 
Dim databaseName As String = "OurDBName" 

' Initialize the connection string builder for the 
' underlying provider. 
Dim sqlBuilder As New SqlConnectionStringBuilder 

' Set the properties for the data source. 
sqlBuilder.DataSource = serverName 
sqlBuilder.InitialCatalog = databaseName 
sqlBuilder.IntegratedSecurity = False 
sqlBuilder.UserID = "OurAppUserName" 
sqlBuilder.Password = "OurPassword" 

' Build the SqlConnection connection string. 
Dim providerString As String = sqlBuilder.ToString 

' Initialize the EntityConnectionStringBuilder. 
Dim entityBuilder As New EntityConnectionStringBuilder 

'Set the provider name. 
entityBuilder.Provider = providerName 

' Set the provider-specific connection string. 
entityBuilder.ProviderConnectionString = providerString 

' Set the Metadata location to the current directory. 
entityBuilder.Metadata = "res://*/NotaModel.csdl|" & _ 
         "res://*/NotaModel.ssdl|" & _ 
         "res://*/NotaModel.msl" 

Console.WriteLine(entityBuilder.ToString) 

Using conn As EntityConnection = New EntityConnection(entityBuilder.ToString) 
    conn.Open() 
    Console.WriteLine("Just testing the connection.") 
    conn.Close() 
End Using 

Lorsque le conn.Open() est exécuté une erreur est renvoyée: « Impossible de charger la ressource de métadonnées spécifié. » Il semble indiquer qu'une ou plusieurs des références "res: // * ..." sont fausses. J'ai confirmé que le projet contient effectivement ces fichiers (sous le dossier bin/debug). Qu'est-ce qui nous manque ici - des idées?

Merci

Répondre

1

Oui, la partie res:// est faux. Regardez les noms de ressources dans Reflector (à l'intérieur de l'assemblage), pas sur votre système de fichiers local, pour voir ce qu'ils devraient être.

+0

Il est probablement exact que les références ne sont pas correctes - malheureusement, en utilisant Reflector ne m'a pas révélé les noms (ou mieux: je n'ai pas le temps maintenant d'apprendre à les utiliser correctement). Mais j'ai trouvé que l'utilisation d'une simple référence non-ressource a fait l'affaire: entityBuilder.Metadata = "NotaModel.csdl | NotaModel.ssdl | NotaModel.msl" au lieu de: entityBuilder.Metadata = "res: //*/NotaModel.csdl | " & _ "res: //*/NotaModel.ssdl |" & _ "res: //*/NotaModel.msl" – Gatmando