2010-10-27 93 views
1

我在我的实体框架,对象和参数中有两个表,它们有一个外键指向它们所属的对象。我想用一个特定对象的所有属性填充一棵树。因此,为了找到那些我想这样做:当我尝试这样做,我得到一个错误说,它不能从类型对象转换为字符串,即使在数据库中该值存储为实体框架外键查询

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

然而一个字符串。我有一个解决方法,我得到一个parentObject的实例,然后遍历每个属性并检查它是否是parent_object == parentObjectInstance,但这比仅执行一个查询效率低得多。任何帮助将不胜感激,谢谢!

+0

您正在使用哪个版本的EF3.5或EF4? – 2010-10-27 20:55:26

+0

我正在使用EF 3.5 – Zack 2010-10-28 14:49:07

回答

2

好,PARENT_OBJECT.ToString()不能被称为L2E(或明或暗地),但如果它只是返回的属性,你可以看看直接:

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

...请注意.NAME

+0

这个伎俩!非常感谢 – Zack 2010-10-28 14:58:01

0

试试这个:

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

你也可以试试这个:'myDB.Attributes.Select(a => a.PARENT_OBJECT.ToString()== parentObject);' – morganpdx 2010-10-27 20:21:13

+0

我试过.toString()抛出:LINQ to Entities无法识别方法'System.String ToString()'方法,并且此方法无法转换为存储表达式。 – Zack 2010-10-27 20:22:10

+0

这两个语句都抛出相同的异常=/ – Zack 2010-10-27 20:26:57