2010-03-23 3 views
2

Quelqu'un sait comment modifier la source de données actuelle d'un DataServices à la volée? Exemple: Je veux consulter le service et passer un paramètre indiquant de prendre une autre connexion, Est-ce possible?Modifier DataSource Services de données WCF

Répondre

0

Si vous voulez passer la connexion désirée dans l'URL, je pense que votre seule option est de créer deux DataServiceHosts.

http://server/datasource1/service.svc 

et

http://server/datasource2/service.svc 
1

Il devrait être très simple il existe une méthode de remplacement, vous pouvez utiliser qui crée une source de données.

// 
// Summary: 
//  Creates a data source of the template class that will be used by the data 
//  service. 
// 
// Returns: 
//  An instance of the data source. 
protected virtual T CreateDataSource(); 

En cas de substitution, il devrait ressembler à ceci.

protected override MyModel CreateDataSource() 
{ 
    MyModel modal = new MyModal(); 

    return modal; 
} 

Cela donnerait la possibilité de créer une source de données avec une chaîne de connexion différente. Ci-dessous j'ai ajouté une liste de choses que vous pouvez faire pour transmettre cette information à DataService afin que vous puissiez changer la connexion de votre source de données à la volée.

1. Demande en-têtes

Vous pouvez le passer côté client des informations supplémentaires aux services de données si vous vous abonnez le SendingRequest sur DataServiceContext, ce qui vous permet d'ajouter des en-têtes de demande supplémentaires à vos requêtes Web. Une fois que vous faites cela par exemple, vous pouvez les lire en accédant à System.Web.HttpContext.Current.Request.Headers sur la méthode CreateDataSource.

Il aurait été agréable de pouvoir accéder à l'interface interne d'IDataService qui expose toutes les informations dont vous avez besoin pour faire ce genre de chose.

2. Chaîne de requête

Une autre façon de faire sortir le SendingRequest et les en-têtes est d'ajouter un paramètre QueryString que vous pouvez vérifier la valeur spécifique et initialiser en conséquence la source de données.

3. Identité

Vous pouvez utiliser les informations d'identification des utilisateurs de choisir quelle source de données que vous souhaitez utiliser.

Encore une fois ce ne sont que des idées sur la façon d'obtenir cette sélection de sources de données.

Vous pouvez faire un certain nombre de choses avec les stratégies ci-dessus, j'espère que cette réponse à votre question et il vous aide à votre problème

PS .: aussi longtemps que ce que vous entendez par « changer la source de données » est le changement la chaîne de connexion de votre modèle à une autre base de données ci-dessus fonctionnera.

0

Essayez de surcharger la fonction CreateDataSource dans la classe DataService. Cela vous permettra de créer votre propre DataSource avec n'importe quelle chaîne de connexion.

Questions connexes