Question

J'ai une table qui a une clé primaire qui est un INT ... J'ai une autre table, qui a une relation de clé étrangère avec cette première table, mais c'est une INT NULLABLE.

C’est parfaitement correct et acceptable à 100% pour SQL ... Cependant, LINQ to SQL se plaint de types incohérents ("int to Nullable [int]").

Message d'erreur: Impossible de créer une association "Store_People". Les propriétés ne correspondent pas aux types: "PersonID", "ID".

Comment résoudre ce problème de sorte que le concepteur cesse de crier après une utilisation correcte du code SQL à 100%?

Était-ce utile?

La solution

Voici ce que j'ai jeté ensemble. La colonne Table1Id de Table2 est une clé étrangère nullable pour Table1. J'ai même ajouté quelques enregistrements de données et testé des requêtes Linq ...

entrer la description de l'image ici

ÉDITER : Depuis que je reçois des avis négatifs (apparemment) pour le lien brisé, car cette question a 6 ans et l'hôte que j'ai utilisé n'a pas survécu ... voici une version mise à jour.

Autres conseils

J'ai trouvé le problème. Vous pouvez créer l'association UNIQUEMENT si la classe parent n'a pas le champ Nullable comme clé.

Donc, ceci:

texte alt http://www.singingeels.com/Articles /UserImage.aspx?ImageID=43d83ac4-707d-47fc-832c-588261e6a5d7

provoquera cette erreur:

texte alt http://www.singingeels.com/Articles /UserImage.aspx?ImageID=19ed54aa-9f4f-4d5c-ba18-4996509d2da7

... mais ceci:

texte alt http://www.singingeels.com/Articles /UserImage.aspx?ImageID=0e09affd-2134-4712-999b-7e792f6e081b

fonctionnera parfaitement.

Cela ressemble à un bogue (ou au moins à une stupidité de LINQ to SQL) ... mais j'aime ça autre que ça.

J'ai précisément cette situation dans un langage DBML, et tout fonctionne correctement.

Clé primaire

  • Nullable - False
  • Clé primaire - Vrai
  • Type de données du serveur - int ID NON NULL IDENTITY
  • Type - int (System.Int32)

Clé étrangère

  • Nullable - Trure
  • Clé primaire - False
  • Type de données du serveur - Int
  • Type - int (System.Int32) (défini comme Nullable dans le fichier context.designer.cs)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top