实体框架仅包括/选择不同表中的某些属性

FerX32

假设我有一种叫做的方法GetThreadWithComments()每个主题有1个用户(创建者),并具有评论列表。每个评论有1个用户(发布者)。

以下是类(由EF生成):

public class Thread
{
    public int ThreadId { get; set; }
    public int UserId { get; set; }
    public string Message { get; set; }

    public List<Comment> Comments { get; set; }
    public User User { get; set; }
}

public class Comment
{
    public long CommentId { get; set; }
    public string Message { get; set; }
    public int UserId { get; set; }
    public int ThreadId { get; set; }

    public User User { get; set; }
}

所以基本上,我想用用户信息加载线程,并用用户信息关联注释。我已经尝试过这样的事情:

db.Threads.Select(x => new
{
    x,
    x.User = new { x.User.Username, x.User.Email },
    x.Comments = x.Comments.Select(c => new
    {
        c.Message,
        c.CommentId,
        c.User = new { c.User.Username, c.User.Email }
    })
});

上面的方法不起作用。但是,我不太确定如何正确执行此操作。我可以使用include,但这会生成所有属性。由于速度是一个问题,因此我尝试使事物尽可能轻。

原因不起作用:它无法生成。编译时错误。我得到的2个错误是:

无法将类型“”隐式转换为...

CS0746无效的匿名类型成员声明符。必须使用成员分配,简单名称或成员访问来声明匿名类型成员。

活力

首先,将实体关系定义为virtual,例如

public User User { get; set; }

应该

public virtual User User { get; set; }

其次,如果以后发布了编译器错误,请尝试添加成员名称。

所以代替

x.User = new { x.User.Username, x.User.Email }

使用

x.User = new { Username = x.User.Username, Email = x.User.Email }

那里也太多了x更正的示例将是:

db.Threads.Select(x => new
{
    x,
    User = new { Username = x.User.Username, Email = x.User.Email },
    Comments = x.Comments.Select(c => new
    {
        c.Message,
        c.CommentId,
        User = new { Username = c.User.Username, Email = c.User.Email }
    })
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用实体框架将属性映射到不同的表

来自分类Dev

实体框架选择不同的名称

来自分类Dev

如何“选择特定数据,仅复制某些列并将其插入到不同的表中?”

来自分类Dev

SQL:如何仅基于某些属性值选择不同的行

来自分类Dev

选择全部,表中的某些属性在codeigniter中得到不同的结果

来自分类Dev

实体框架-包括多个级别的属性

来自分类Dev

实体框架查询-从另一个表中仅选择直到时间戳记的记录

来自分类Dev

实体框架核心:如何在其空列属性中包括与空相关的实体?

来自分类Dev

实体框架中的不同记录

来自分类Dev

Javascript:仅选择对象中的某些属性

来自分类Dev

在实体框架中选择不同的行

来自分类Dev

Linq实体框架选择与聚合列不同

来自分类Dev

使用实体框架仅更新数据库中的某些列

来自分类Dev

实体框架:选择属性作为对象

来自分类Dev

使用实体框架动态选择表集

来自分类Dev

实体框架可以选择阻止表吗?

来自分类Dev

使用实体框架从表中选择

来自分类Dev

您何时需要在实体框架中包括相关实体?

来自分类Dev

实体框架包括绩效

来自分类Dev

在Symfony2中将实体字段类型显示为每个实体的某些属性的表

来自分类Dev

实体框架-包括3个子级别的属性

来自分类Dev

实体框架通用存储库,包括通过参数的属性

来自分类Dev

实体框架核心-为集合包括属性的多个级别

来自分类Dev

如何从不同的表中仅选择/更新相同的 GUID

来自分类Dev

实体框架-在HTTP响应中仅包含数组属性的特定数组元素

来自分类Dev

来自两个不同实体的实体框架联接表

来自分类Dev

从实体框架选择语句中排除某些列

来自分类Dev

我可以拥有仅映射到表中某些列的实体吗?

来自分类Dev

选择表A中的记录,而*仅*表B中的某些相应记录

Related 相关文章

  1. 1

    如何使用实体框架将属性映射到不同的表

  2. 2

    实体框架选择不同的名称

  3. 3

    如何“选择特定数据,仅复制某些列并将其插入到不同的表中?”

  4. 4

    SQL:如何仅基于某些属性值选择不同的行

  5. 5

    选择全部,表中的某些属性在codeigniter中得到不同的结果

  6. 6

    实体框架-包括多个级别的属性

  7. 7

    实体框架查询-从另一个表中仅选择直到时间戳记的记录

  8. 8

    实体框架核心:如何在其空列属性中包括与空相关的实体?

  9. 9

    实体框架中的不同记录

  10. 10

    Javascript:仅选择对象中的某些属性

  11. 11

    在实体框架中选择不同的行

  12. 12

    Linq实体框架选择与聚合列不同

  13. 13

    使用实体框架仅更新数据库中的某些列

  14. 14

    实体框架:选择属性作为对象

  15. 15

    使用实体框架动态选择表集

  16. 16

    实体框架可以选择阻止表吗?

  17. 17

    使用实体框架从表中选择

  18. 18

    您何时需要在实体框架中包括相关实体?

  19. 19

    实体框架包括绩效

  20. 20

    在Symfony2中将实体字段类型显示为每个实体的某些属性的表

  21. 21

    实体框架-包括3个子级别的属性

  22. 22

    实体框架通用存储库,包括通过参数的属性

  23. 23

    实体框架核心-为集合包括属性的多个级别

  24. 24

    如何从不同的表中仅选择/更新相同的 GUID

  25. 25

    实体框架-在HTTP响应中仅包含数组属性的特定数组元素

  26. 26

    来自两个不同实体的实体框架联接表

  27. 27

    从实体框架选择语句中排除某些列

  28. 28

    我可以拥有仅映射到表中某些列的实体吗?

  29. 29

    选择表A中的记录,而*仅*表B中的某些相应记录

热门标签

归档