Comment puis-je définir par programmation de la chaîne de connexion pour Entity Framework Code First?
Je suis en train d'écrire du code qui me permet de basculer entre les SQLCE (en local sur ma machine de dev) et complète de SQL (sur AppHarbor). Avec SQL CE, la chaîne de connexion, tout est géré pour moi, mais j'ai de la construire moi-même pour SQL. Mon code pour l'instant est au-dessous, mais il donne cette erreur:
Mot-clé non pris en charge: "métadonnées"
J'ai été à la recherche en ligne pendant des heures, mais toutes les solutions nécessitent l'utilisation d'une "ContextBuilder" de la classe dont je ne trouve pas (j'ai installé EF via le package NuGet).
Voici le code actuel (exécuter au démarrage via WebActivator):
public static void Start()
{
// Read the details from AppSettings. Locally, these will be empty.
var databaseHost = ConfigurationManager.AppSettings["DatabaseHost"];
var databaseName = ConfigurationManager.AppSettings["DatabaseName"];
var databaseUsername = ConfigurationManager.AppSettings["DatabaseUsername"];
var databasePassword = ConfigurationManager.AppSettings["DatabasePassword"];
// Check whether we have actual SQL Server settings.
if (!string.IsNullOrWhiteSpace(databaseHost) && !string.IsNullOrWhiteSpace(databaseName))
{
// Set up connection string for a real live database :-O
var connectionString = string.Format("metadata=res://*/DB.csdl|res://*/DB.ssdl|res://*/DB.msl;"
+ "provider=System.Data.SqlClient; provider connection string='Data Source={0};"
+ "Initial Catalog={1};User ID={2}; Password={3};MultipleActiveResultSets=True'",
databaseHost, databaseName, databaseUsername, databasePassword);
Database.DefaultConnectionFactory = new SqlConnectionFactory(connectionString);
}
else
{
// Set a custom database initializer for setting up dev database test data.
Database.SetInitializer<BlogDataContext>(new BlogDataIntializer());
// Set the connection factory for SQL Compact Edition.
Database.DefaultConnectionFactory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0");
}
}
Vous devez vous connecter pour publier un commentaire.
vous devez utiliser le EntityConnectionStringBuilder classe
Dans l'Entité Cadre du Code de la Première utilisation de SqlConnection. Vous ne pouvez pas utiliser EntityConnectionStringBuilder parce que dans le code-d'abord il n'y a pas de fichiers de métadonnées.
Vous pouvez aussi le mettre directement sur votre contexte. Vous devez joindre le mdf à l'instance de sql server que vous souhaitez utiliser en premier. Pas exactement élégant, mais il a travaillé pour moi
comme d'habitude EF auto-générer tout quand vous ajoutez votre première ligne pour le contexte.
Ce code va être utile pour la création de
connection string
avecEntity Framework
Il peut être appelé à partir d'un ensemble de paramètres comme
pour générer un
connection string
comme ce