2010-10-27 4 views
1

J'ai deux tables dans mon cadre d'entité, les objets et les paramètres qui ont une clé étrangère pointant vers l'objet auquel ils appartiennent. Je veux remplir un arbre avec tous les attributs d'un certain objet. Ainsi, afin de trouver ceux que je veux faire:Entity Framework Foreign Key Queries

String parentObject = "ParentObjectName"; 
    var getAttributes = (from o in myDB.ATTRIBUTE 
         where o.PARENT_OBJECT == parentObject 
         select o); 

Cependant lorsque je tente de faire, je reçois une erreur disant qu'il ne peut pas convertir le type objet à chaîne, même si la base de données, cette valeur est stockée sous forme de un string. J'ai une solution de contournement où j'obtiens une instance de parentObject, puis parcourez chaque attribut et vérifiez si c'est parent_object == parentObjectInstance, mais c'est beaucoup moins efficace que de faire une seule requête. Toute aide serait grandement appréciée, merci!

+0

Quelle version utilisez-vous, EF3.5 ou EF4? –

+0

J'utilise EF 3.5 – Zack

Répondre

2

Eh bien, PARENT_OBJECT.ToString() ne peut pas être appelé (implicitement ou explicitement) dans L2E, mais si elle retourne juste une propriété, vous pouvez regarder que directement:

String parentObject = "ParentObjectName"; 
var getAttributes = (from o in myDB.ATTRIBUTE 
        where o.PARENT_OBJECT.NAME == parentObject 
        select o); 

... notez le .NAME

+0

Cela a fait l'affaire! Merci beaucoup – Zack

0

Essayez ceci:

String parentObject = "ParentObjectName"; 
    var getAttributes = (from o in myDB.ATTRIBUTE 
         where o.PARENT_OBJECT.ToString() == parentObject 
         select o); 
+0

Vous pouvez aussi essayer ceci: 'myDB.Attributes.Select (a => a.PARENT_OBJECT.ToString() == parentObject);' – morganpdx

+0

J'ai essayé le .toString() qui lance: LINQ to Entities ne reconnaît pas la méthode 'System.String ToString()' méthode, et cette méthode ne peut pas être traduite en une expression de magasin. – Zack

+0

Ces deux instructions génèrent la même exception =/ – Zack