繁体   English   中英

使用实体框架获取3个分层对象

[英]Get 3 layered object using entity framework

如果我有一个具有汽车列表的制造商对象,并且汽车对象具有一个特征列表,我该如何返回一个包含所有汽车列表的制造商对象,并且该列表中的每辆汽车都包含一个特征列表。 我在网上看到的每个示例仅使用一个2层对象。 这就是我所拥有的,它返回制造商和汽车列表,但是每辆汽车返回0的功能列表结果

        Manufacturer man = new Manufacturer();
        using (MyEntities db = new MyEntities())
        {
            man= (from m in db.Manufacturer.Include("Cars")
                    where m.Name.Trim().Equals("Ford")
                    select m).FirstOrDefault();
        }
        return man;

如果您想使用延迟加载,只需将您的导航属性声明为“虚拟”

如果您希望加载所有相关对象,可以使用Includes:

.Include("Cars").Include("Cars.Features")

这种方法的一个缺点是执行查询可能会很昂贵。 原因是将使用多个联接,并且结果服务器答案的大小可能会很大。

您可以使用此策略同时加载一个级别:

    Manufacturer man = new Manufacturer();
    using (MyEntities db = new MyEntities())
    {
        man= (from m in db.Manufacturer
                where m.Name.Trim().Equals("Ford")
                select m).FirstOrDefault();

        models = man.SelectMany(m => m.Cars);

        features = models.SelectMany(m => m.Features);

        man.Load();
        models.Load();
        features.Load();
    }
    return man;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM