Question

Disons que j'ai deux tables (Address et Phone) dans sql qui ont un à une relation. J'ai créé LINQ correspondant aux classes sql et changé l'association à OneToOne

Je veux récupérer les deux objets en filtrant l'objet enfant. J'ai la par exemple requête suivante qui fonctionne très bien:

var n = db.Addresses.Where(t => t.Phone.Number == 100);

Est-il possible que je peux faire les travaux suivants:

var n = db.Addresses.Where(t => t.Phone == new Phone(100));

Le constructeur de la classe Phone au-dessus de la propriété initialise de Number. Comme je peux voir la requête qui est délivré contient une clause qui filtre le tableau Téléphones par identifiant (clé primaire), mais la clause numéro ne est pas inclus.

Si je mets Number comme clé primaire dans le studio visuel, alors il est inclus dans la clause where, mais la recherche ne renvoie toujours pas quoi que ce soit la valeur du paramètre id est 0. Même si cela a fonctionné, il n'est pas une solution comme Number devrait ne pas être une clé primaire.

Était-ce utile?

La solution

Qu'est-ce que vous demandez ne fait pas tout à fait sens. Si vous voulez que l'élément de téléphone donné l'adresse, vous avez en accédant à la propriété Address.Phone.

Vous ne pouvez pas initialiser un type et l'utiliser pour projeter sur ce que est DLinq, où la requête est traduite vers la DB. Vous pouvez le faire sur Linq à des objets, mais il vous oblige à énumérer la liste, qui chercher toutes les informations de base de données en mémoire, ce qui peut ne pas être bon pour la performance ...

Je ne vois pas la question ici? Vous avez l'adresse, une recherche de travail pour elle, et vous pouvez accéder à la propriété téléphonique en accédant à la propriété d'adresse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top