在Web Service .NET中返回带有childs和father的实体框架对象

时间:2015-03-25 13:08:48

标签: c# entity-framework web-services asmx

我正在研究.NET Web服务和数据库实体框架。

我的项目Dictionary Schema

有这个架构

我需要返回包含所有描述,图像,示例,共轭和词典的条目,所以我制作了这个网络方法

 [WebMethod]
    public SEP_Entry RetrieveEntry(int Entry_id)
    {
        using (var db = new DictionaryDBEntities())
        {
            var row = (from R in db.SEP_Entry where R.Entry_id == Entry_id select R).SingleOrDefault();

            return row;
        }
    }

当我运行此方法时,它只返回没有子节点的Entry(描述,示例,图像)或父节点(字典)。

<SEP_Entry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<EntityKey>
<EntitySetName>SEP_Entry</EntitySetName>
<EntityContainerName>DictionaryDBEntities</EntityContainerName>
<EntityKeyValues>
<EntityKeyMember>
<Key>Entry_id</Key>
<Value xsi:type="xsd:int">14</Value>
</EntityKeyMember>
</EntityKeyValues>
</EntityKey>
<Entry_id>14</Entry_id>
<Copy_Entry_id>13</Copy_Entry_id>
<Dic_id>1</Dic_id>
<Pic_id xsi:nil="true"/>
<Entry_root>(ب ي د)</Entry_root>
<Entry_stem>اباد</Entry_stem>
<Entry_word>أَبادَ</Entry_word>
<SEP_DictionaryReference>
<EntityKey>
<EntitySetName>SEP_Dictionary</EntitySetName>
<EntityContainerName>DictionaryDBEntities</EntityContainerName>
<EntityKeyValues>
<EntityKeyMember>
<Key>Dic_id</Key>
<Value xsi:type="xsd:int">1</Value>
</EntityKeyMember>
</EntityKeyValues>
</EntityKey>
</SEP_DictionaryReference>
<SEP_PictureReference/>
</SEP_Entry>

如何返回包含所有子节点(描述,示例,图像)和父节点(字典)的对象(条目)?

1 个答案:

答案 0 :(得分:1)

如果我正确理解你,你只需要加载你想要的相关对象。默认情况下,EF只抓取父对象,然后根据需要延迟加载子对象。你可以过来骑,并告诉它热切地加载所有的孩子(在第一次运行)。

也许尝试使用.Include()来急切加载孩子的情况。 .Include个文档

using (var db = new DictionaryDBEntities())
{
    var row = (from R in db.SEP_Entry where R.Entry_id == Entry_id select R).Include("Description").Include("Example").Include("Image").SingleOrDefault();

    return row;
}