首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Entity Framework5中包含基成员似乎不起作用

在Entity Framework5中包含基成员似乎不起作用
EN

Stack Overflow用户
提问于 2013-05-06 00:17:41
回答 1查看 24关注 0票数 0

以下是我的实体:

代码语言:javascript
复制
public abstract class ResourceBase
{
    [Key]
    int Id { get; set; }

    [ForeignKey("Resource")]
    public Guid ResourceId { get; set; }
    public virtual Resource Resource { get; set; }
}
public class Resource
{
    [Key]
    public Guid Id { get; set; }

    public string Type { get; set; }
}
public class Message : ResourceBase
{
    [MaxLength(300)]
    public string Text { get; set; }
}

然后我的查询是这样的:

代码语言:javascript
复制
var msgs = messages.Where(x=>x.Id == someRangeOfIds).Include(m=>m.Resource).Select(x => new
                                {
                                    message = x,
                                    replyCount = msgs.Count(msg => msg.Id = magicNumber)
                                });

我在禁用代理创建的情况下运行此命令,结果是所有消息,但所有资源属性都为空。我检查了数据库,具有匹配Guids的资源就在那里。

为了说明的目的,我极大地简化了我的现实生活场景,但我想你会发现你可以用这个来重现这个问题。

EN

回答 1

Stack Overflow用户

发布于 2013-05-10 02:30:56

实体框架5很好地处理继承的属性(通过扁平化继承树并将所有属性作为实体表的列包括在内)。

此查询不起作用的原因是由于include之后的投影。不幸的是,include语句只有在返回实体时才能真正起作用。虽然,我确实看到提到了一个棘手的解决方案,它涉及在指定返回数据的形状之后调用"include“……如果有人有更多关于这方面的信息,请回复。

我想出的解决方案是重新编写查询语句,以便在一个查询中获得所有消息,然后在另一次访问数据库的过程中,另一个查询获得所有回复计数。

2次往返,而实际上应该只有1次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16386549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档