小编Con*_*phy的帖子

如果我从IQueryable中选择,则Include将丢失

在对IQueryable查询执行选择后,include不起作用.这有什么方法吗?我的疑问是

public IQueryable<Network> GetAllNetworks()
{
    var query = (from n in _db.NetworkSet
                .Include("NetworkContacts.Contact")
                .Include("NetworkContacts.Contact.RelationshipSource.Target")
                .Include("NetworkContacts.Contact.RelationshipSource.Source")
                 select (n));        
    return query;;
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用以下代码在我的WebUI层中填充mya ViewModel

            var projectedNetworks =
            from n in GetAllNetworks()
            select new NetworkViewModel
            {
                Name = n.Name,
                Contacts = from contact in networkList
                    .SelectMany(nc => nc.NetworkContacts)
                    .Where(nc => nc.Member == true)
                    .Where(nc => nc.NetworkId == n.ID)
                    .Select(c => c.Contact)                        
                    select contact,
            };

        return projectedNetworks;
Run Code Online (Sandbox Code Playgroud)

现在问题出现在我新创建的NetworkViewModel中.Contacts集合对象不包含RelationshipSource.Target或RelationshipSource.Source的任何已加载数据.

但是,从原始Repository IQueryable方法运行时,数据就存在.但是,相关的包含数据似乎没有转移到我使用上面的Select New NetworkViewModel {}代码时创建的新Contacts集合中.

有没有办法在传入新对象时保留此Include数据?目前我只是不断获得NULL异常

linq-to-entities entity-framework anonymous-types include

9
推荐指数
1
解决办法
1万
查看次数