Le EntityContainer nom doit être unique dans les différentes assemblées?
J'ai deux projets:
- Nouvelles.Les données
- Balises.Les données
À la fois de définir Entities
. Lorsque j'essaie d'exécuter
using (var db = new News.Data.Entities("name=Entities"))
{
results1 = db.News.ToList();
}
using (var db = new Tag.Data.Entities("name=Entities"))
{
results2 = db.Tag.ToList();
}
sur une application de console, j'obtiens cette erreur:
Schéma spécifié n'est pas valide. Erreurs:
Model1.csdl(3,4) : erreur 0019: L'
EntityContainer nom doit être unique.
Un EntityContainer avec le nom
'Entités' est déjà défini.
Est-il possible d'utiliser
News.Data.Entities
Tags.Data.Entities
au lieu de
News.Data.NewsEntities
Tags.Data.TagsEntities
?
OriginalL'auteur BrunoLM | 2011-02-04
Vous devez vous connecter pour publier un commentaire.
Connectionstrings sont configurés au niveau de l'application, et la nomconteneur sert d'identifiant unique. Soit changer la containerNames à une valeur unique, soit ré-écrire le constructeur par défaut de la
ObjectContext
peut-être chercher unSetting
, qui peut être configuré au niveau de l'assemblée.Edit:
Lors de la création d'une instance d'un
ObjectContext
,News.Data.Entities
dans cet exemple, la classe de base de votre contexte est généralement construits avec unContainerName
. Ce paramètre donne leObjectContext
toutes les informations nécessaires pour faire son magasin de connexion, et de faire toutes ses de cartographie des affaires.Fondamentalement, une association est faite entre les
ObjectContext
type et laContainerName
. Lors de l'instanciation de votre deuxième contexteTags.Data.Entities
, qui est un autre type, il va essayer d'associer le type du conteneur et c'est ce qui lève l'exception, puisque vous ne pouvez pas associer le même Nomconteneur deux fois.De régler le problème, si vous pouvez, la meilleure chose serait de recréer l'EDMX, avec des récipients différents noms. Si la suppression n'est pas une option, vous pouvez modifier la Nomconteneur paramètre dans le concepteur, puis ouvrez-le edmx dans le bloc-notes, et cherchez "EntitiesModelStoreContainer", et modifier les 'Entités' à ce que votre nouveau Nomconteneur est.
Espère que ça aide...
Je sais, mais le conteneur doit également être unique au niveau de l'application. Vous avez deux conteneurs avec la même
ContainerName
. Le fait qu'il vous donne une collision dans la configuration doit être un premier indice. Fondamentalement, EF associés à l'instance de ObjectContext avec l'EDMX pour qui vous avez fourni de l'identificateur unique(=nom du conteneur) par l'intermédiaire de son constructeur.La partie la plus utile de les réponses ci-dessus est le détail sur l'ouverture de l'EDMX directement dans le bloc-notes. Visual Studio ne parvient pas à mettre à jour l'EDMX correctement en changeant juste le nom du conteneur dans le VS volet propriétés. Réponses à des questions similaires ont manqué de remarquer ce détail.
Crack ouvrir l'edmx dans le bloc-notes, modifiez le nom, puis actualiser le modèle dans l'edmx a fonctionné pour moi
OriginalL'auteur Yannick Motton
- Je prendre ce que vous avez essayé ceci:
Votre problème, c'est que les deux projets ont la même entité nom du conteneur. Vous avez besoin de changer (au moins) l'un d'eux.
Edit: Désolé, pour répondre à votre question exacte ... Non!
connectionstring
.<add name="Entities" connectionString="metadata=res://*/;provider=...
Ah, je vois ... la= nom de la part du constructeur a été la chaîne de connexion à utiliser.
Ok, eh bien comme je l'ai dit, vous avez besoin d'avoir différents entité contenant les noms. Renommer comme vous l'avez suggéré à NewsEntites et TagEntities.
OriginalL'auteur Odhran
Le problème ne pourrait pas être avec votre logique. Je rencontre parfois, quand je switch entre la création des profils. Pour le fixer, j'ai supprimer tous les fichiers temporaires et de faire une nouvelle version.
OriginalL'auteur dawidg