Dans ma base de données, les concessions ont une relation plusieurs-à-un avec les entreprises (chaque concession a un ID de société). SqlMetal a capturé cette relation et a généré les classes appropriées, de sorte que chaque concession a un élément Firm. Je suis contre une requête de liaison (ici simplifiée) qui retourne une liste de concessions ainsi que des informations sur l'entreprise correspondante:Comment gérer correctement les clés étrangères nulles dans Linq to SQL?
From c as Concession in Db.Concessions _
Select _
c.ConcessionID, _
c.Title, _
c.Firm.Title
Le problème est que, dans certains cas, une concession n'a pas été attribué à une entreprise (c .FirmID est nul), alors c.Firm est rien et je reçois Object not set to an instance
etc.
Je peux contourner ce problème en faisant une jointure comme suit:
From c As Concession In Db.Concessions _
Join f As Firm In Db.Firms On f.FirmID Equals c.FirmID _
Select _
c.ConcessionID, _
c.Title, _
Firm_Title = f.Title
cela ne jette pas une erreur quand FirmID est null (Firm_Title est juste une chaîne vide), mais c'est pas élégant: il n'est pas orienté objet, et ne tire pas parti de toute l'intelligence relationnelle que Linq to SQL a déjà capturée.
Y a-t-il une manière plus gracieuse de faire face à cette situation?
Je pense que vous pouvez faire alternativement: if (c.Firm.Title, String.Empty) – Kevin
Non, cela jette "Référence de l'objet non défini à une instance d'un objet" si c.Firm est rien. –