Question

J'utilise une architecture en couches avec Entity Framework comme mon dataLayer avec un tas de dépôts sur le dessus contenant les requêtes LINQ-To-entités. La couche de données est un projet, à côté que j'ai une couche de services et de l'interface, qui est un site Web.

Je veux que mon site soit responsable de spécifier le connectionstring pour mon modèle d'entité. Comment puis-je faire?

J'utilise une méthode singleton pour arriver à mon dépôt de l'entité, qui est situé à l'intérieur de la couche de données.

Merci

Était-ce utile?

La solution

Vous pouvez copier la chaîne de connexion créée dans le App.Config de l'ensemble de DAL dans la section connectionStrings du web.config.

Vous pouvez garder la chaîne de connexion dans le dll de montage, mais vous ne devriez pas le déployer avec le site.

Vous devez copier la chaîne de connexion entière. Il devrait ressembler à ceci:

<add name="DataEntities" connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=xxx;Initial Catalog=xxx;User Id=xxx;Password=xxx;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

Il devrait inclure toutes les informations sur l'endroit où existent les fichiers de mappage.

Autres conseils

Dans mon cas, bien que je me sers de la place L2S L2E, mais la recommandation doit être maintenue. J'ai une bibliothèque de configuration generalize qui alimente à partir d'un fichier XML. Quand un contexte de données est nécessaire, chaque objet de données a une méthode comme suit. Certes, il pourrait être templated assez facile, si vous préférez.

private static string _conStr = null;
private static CalendarsAndListsDataContext GetDataContext()
{
    if (_conStr == null)
    {
        _conStr = ConfigurationLibrary.Config.Settings().GetConnectionString("liveConString");
    }

    return new CalendarsAndListsDataContext(_conStr);
}

Maintenant, le plus grand inconvénient est des changements de chaîne de connexion nécessitent un redémarrage de l'application, mais dans mon cas, ce n'est pas un problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top