1

Quelqu'un peut-il aider?Utilisation de la relation/clé étrangère avec linq2sql?

J'ai créé une relation entre mes tables de réservation (clé primaire) et assurance (pour clé) et importé dans linq2sql et vérifié mes fichiers C# automatiquement créés et bien sûr j'ai réservation.MyFieldNames etc etc PLUS réservation.Insurance est ma relation mais réservation.Insurance je ne peux pas voir les noms de domaine de l'assurance - ai-je raté quelque chose?

Est-ce que je dois appeler un GetInsurances ou quelque chose? Je ne vois rien .. En fait, l'assurance est de type Linq.entityset ???

Aussi j'espérais créer ma table de réservation (ce qui était agréable et facile), puis automatiquement « INJECT » une assurance (à savoir 1 à plusieurs) de IList ou quelque chose ..

est-ce pas possible,

Toute aide vraiment appréciée

ps J'ai créé mes fichiers C# dto créés automatiquement via T4 Toolbox mais cela ne devrait pas faire de différence. Je n'ai qu'un fichier séparé pour chaque entité.

Répondre

4

Je ne suis pas sûr à 100% de ce que vous entendez par "Je ne vois rien".

En supposant que vous avez une table Reservations et une table Insurance qui fait référence aux "réservations" - quel type de relation est-ce? 1: 1? 1: beaucoup? Quel chemin? Pouvez-vous poster une capture d'écran de votre surface de conception DBML? (téléchargez-le sur www.tinypic.com et incluez le lien sous forme d'image ici dans votre question)? La classe "Réservations" contiendra une instance d'une "Assurance" (EntityRef<Insurance>) ou une liste (EntitySet) d'objets "Assurances" (EntitySet<Insurance>) - selon la nature de la relation - et vous devriez être en mesure de: naviguer dans ceux dans le code, par exemple

string foo = myReservation.Insurance.CustomerName; // or whatever 

Vous ne verrez pas ceux sur la surface du concepteur - c'est juste un lien vers une autre classe somehwere sur votre surface de conception, non?

va de même pour l'inverse - si l'assurance est associée à exactement une réservation, vous devriez être en mesure (en code) à faire:

string bar = myInsuranceObject.Reservation.MyFieldName1; // or whatever 

Il est donc pas tout à fait clair pour moi ce cas, vous Je fais vraiment référence à - pouvez-vous élaborer un peu plus sur votre question et la rendre plus claire? Sur la base de NerdDinner sample, je vais essayer d'élaborer. Consultez la surface de conception DBML:

alt text http://i30.tinypic.com/2q21z6b.jpg

Ici, vous ne voyez pas des propriétés utilisées pour aller et venir entre les objets. Mais vous voyez que la classe "RSVP" a une clé étrangère "DinnerID" qui la relie à la classe "Dinner". Donc, c'est une relation 1: n: un dîner a n RSVP, et chaque RSVP est pour exactement un dîner.

Dans votre code, vous voyez ces propriétés créées maintenant - vérifier la classe RSVP première:

alt text http://i31.tinypic.com/fazaz5.jpg

Vous pouvez voir que la classe RSVP a une EntityRef<Dinner> - une référence (lien) exactement un Dinner - ce dîner que cette RSVP est pour. D'autre part, la classe Dinner a une liste complète de RSVP de tous les geek qui prévoient d'assister à ce dîner!

alt text http://i29.tinypic.com/66yn9e.jpg

Ainsi, dans la classe Dinner, vous avez un EntitySet<RSVP> - une liste complète des participants, que vous pouvez ensuite naviguer lorsque vous travaillez avec votre classe Dinner.

Est-ce que cela rend les choses un peu plus claires?

Marc

+0

merci d'avoir ouvert mes yeux, je pense que je l'ai maintenant !! Merci –

Questions connexes