2010-08-16 5 views
1

Je souhaite ajouter une nouvelle classe de service de domaine dans vs2010. Je choisis le contexte de ma base de données d'infrastructure dans la boîte de dialogue "Ajouter une nouvelle classe de service de domaine", mais elle ne me montre pas les entités disponibles. Si je clique sur « ok » VS2010 me donne le message d'erreur suivant:DomainService fonctionne uniquement avec le fichier EDMX?

--------------------------- 
Microsoft Visual Studio 
--------------------------- 
Value cannot be null. 

Parameter name: ssdlPath 
--------------------------- 
OK 
--------------------------- 

La raison est que je n'ai pas un fichier EDMX (je l'ai essayé avec un fichier EDMX et cela a fonctionné). Au lieu de cela, j'ai un fichier séparé csdl, msl et ssdl. C'est parce que je veux supporter plusieurs bases de données. Comment utiliser la classe LinqToEntitiesDomainService avec mon contexte de données? Les objets d'entité et le contexte de données sont générés avec le modèle POCO. Si j'ajoute la classe de domaine Serive manuellement (ne pas utiliser le service de domaine Wizzard) Je reçois une erreur de compilation qui dit essentiellement la même:

MSBuild\Microsoft\Silverlight\v4.0\Microsoft.Ria.Client.targets(303,5): error : Value cannot be null. 
MSBuild\Microsoft\Silverlight\v4.0\Microsoft.Ria.Client.targets(303,5): error : Parameter name: ssdlPath 

Quelqu'un peut-il aider?

+0

Quelqu'un at-il utilisé LinqToEntitiesDomainService sans fichier EDMX? Je veux dire que la génération de code client pour silverlight ne semble pas fonctionner. Comment la génération de client détecte-t-elle le ssdlPath? – Jeldrik

+0

Y a-t-il une chance pour que ça marche? J'ai le même problème et je suis perplexe. –

+0

Malheureusement pas. J'ai fini par utiliser la classe DomainService (insted des calss LinqToEntitiesDomainService) et implémenter des méthodes personnalisées. – Jeldrik

Répondre

1

Sélectionnez YorDoaminContainer.csdl, le fichier YorDoaminContainer.ssdl et le fichier YorDoaminContainer.msl, puis Dans Propriétés, définissez Action de construction sur Ressource incorporée. Puis assurez-vous que vous avez une chaîne de connexion correcte pour ces trois ressources.

par exemple:

<connectionStrings> 
    <add name="DomainModel" 
     connectionString="metadata=res://*/NameSpace.DomainController.csdl|res://*/NameSpace.DomainController.ssdl|res://*/NameSpace.DomainController.msl; 
     provider=System.Data.SqlClient;provider connection string='Data Source=localhost; 
     Initial Catalog=DB;Integrated Security=True;Connection Timeout=60; 
     providerName="System.Data.EntityClient" /> 
</connectionStrings> 
+0

Si vous avez l'un des trois, vous devez vous assurer qu'ils sont tous intégrés ou vous verrez une exception ArgumentNullException csdlPath, ssdlPath ou mslPath respectivement. –

+0

Merci pour la réponse. J'ai l'action de construction définie sur "Embedded Resource" pour les trois fichiers. Le nom de fichier joue-t-il un rôle? Les noms de fichiers sont les suivants: DomainController.csdl, DomainController.msl et DomainController.Oracle.ssdl. Je les ai mis dans un sous-dossier appelé "Modèle" – Jeldrik

+0

Jeho, j'ai mis à jour la réponse. –

Questions connexes