Erreur 3007: Problème dans la Cartographie des Fragments de départ de la ligne 186, 205: Non-colonne de Clé Primaire(s) [WheelID] sont mappées dans les deux fragments différents aspect conceptuel propriétés - incohérence des données n'est possible que parce que le correspondant aspect conceptuel, les propriétés peuvent être modifiés séparément.
J'ai trouvé plusieurs endroits sur le web décrivant cette erreur, mais je n'ai tout simplement pas comprendre. (confus smiley va ici)
Il y a quelque chose d'assez fondamental ici, je dois être manquant. Pouvez-vous l'expliquer, afin que je le comprendre? Peut-être à l'aide de ma vraie vie exemple ci-dessous?
Clé étrangère 1:N Roues.Id -> Tranches.WheelId
- Je les ajouter à entity framework, et WheelId n'est pas visible dans les Tranches d'entité.
Faire de certains solution de contournement (suppression de la relation à partir de la db avant d'ajouter des tables à EF - puis re-création et mise à jour des EF) j'ai réussi à obtenir le WheelId pour rester en Tranches, mais ensuite, je reçois le message d'erreur mentionné dans la partie supérieure.
Réponses
Trop de publicités?Slices.WheelId étant un FK, vous ne pouvez pas l'exposer dans votre modèle client, point à la ligne. Il existe des moyens d'obtenir la valeur, cependant.
var wheelId = someSlice.Wheels.ID;
Mise à jour Dans EF 4, vous pouvez le faire en utilisant des associations FK au lieu d'associations indépendantes.
Essayez de supprimer l'étranger colonne de propriété de l'Entité définie à l'aide de l'entité de modèle de conception, il permettra de résoudre votre problème
Par exemple
Nous avons deux tables est un client et un autre ordre, à l'aide de l'entité de modèle de conception, nous avons ajouté association entre les clients et les commandes lorsque nous faisons cela Ado.net entity framework, je vais ajouter les propriétés de navigation pour les deux tableaux ci-dessous.
Comme Client.Commandes - Ici, l'ordre est liste Ordre.Client
Un - Beaucoup de relation.
Nous avons donc besoin de retirer la propriété de avec nom de code client[colonne de clé Étrangère] de l'Ordre entité.
Pour référence:
J'avais mis les clés étrangères dans la base de données mais le cadre n'était toujours pas en tirant dans correctement. J'ai donc essayé d'ajouter l'association de moi-même.
Cependant, quand j'ai fait ce que je voudrais obtenir une erreur de cartographie. Il m'A fallu du temps mais j'ai compris. Ce que j'ai fait a été mis en place l'association à l'aide de l'entité boîte à outils de l'association de l'outil et puis vous avez qu'à double cliquer sur l'association (1 à plusieurs) ligne et définissez le primaire et de clé étrangère là. Nous espérons que cela vous à aider d'autres personnes qui pourraient avoir le même problème. Je n'ai pas trouvé la réponse nulle part.
J'ai eu ce problème pour une tout autre raison, et le message a été légèrement différente; il n'a pas dit "l'incohérence des données est possible parce que le correspondant aspect conceptuel, les propriétés peuvent être modifiés séparément."
J'ai une table dans mon modèle avec une colonne binaire où je stocke des données d'image. Je veux seulement ces données retourné quand j'en ai besoin (le rendement est une fonction), je l'ai donc divisé la table à l'aide d'une méthode similaire à cela. Plus tard, j'ai ajouté une propriété à la table, puis mis à jour le modèle de la base de données. L'assistant ajout de la propriété à la fois des types d'entité reportez-vous à la table avec l'ajout de la propriété. J'ai dû le supprimer de l'un d'entre eux pour résoudre l'erreur.
Pour les requêtes LinQ to Entities dans EF1, ma solution de contournement pour ne pas avoir accès à la clé étrangère en tant que propriété est avec le code suivant, qui ne génère pas de requête de jointure à la table associée:
dbContext.Table1s.FirstOrDefault(c => (int?)c.Table2.Id == null)
c'est-à-dire que le SQL généré est:
...WHERE ([Extent1].[Table2Id] IS NULL)...