如何在实体框架中按多个相关实体过滤

巴拉兹·波顿(BalázsBotond)

我有一个-也许有点尴尬的问题-我想不出答案。我有以下实体:

public class Post
{
    public Guid Id { get; set; }
    public string Text { get; set; }
    public virtual ICollection<Tag> Tags { get; set; }
}

public class Tag
{
    public Guid Id { get; set; }
    public string Name { get; set; }
}

我使用流畅的API将关系配置为多对多:

modelBuilder.Entity<Post>()
    .HasMany(p => p.Tags)
    .WithMany()
    .Map(m =>
    {
        m.MapLeftKey("PostId");
        m.MapRightKey("TagId");
        m.ToTable("PostTags");
    });

我想按标签列表过滤帖子(仅返回指定了所有标签的帖子):

context.Posts.Where(p => p.Tags.Any(t => tags.Contains(t)))

tags用户指定标签的列表在哪里,我的Tag实体将其Equals方法重写为基于该Id属性。但是当我运行查询时,我得到了NotSupportedException

EntityFramework.SqlServer.dll中发生类型为'System.NotSupportedException'的异常,但未在用户代码中处理

附加信息:无法创建类型为'Plog.Domain.Plog.Tag'的常量值。在此上下文中仅支持原始类型或枚举类型。

如何以合理的方式进行这项工作?

巴拉

您似乎在尝试将标签用作Tag查询中的列表.Contains()因为它们不是常量,所以不能与类一起使用。转换tags为的列表Guid(因为您正在选中Id)。IE

context.Posts.Where(p => p.Tags.Any(t => tags.Contains(t.Id)))

为了提高性能,您可以在表上放置索引。那是我的2美分。也许今天是更好的方法,但是以上内容对我而言过去是可以的。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在实体框架中过滤“包含”实体?

来自分类Dev

如何按多个单词过滤C#实体框架

来自分类Dev

如何在实体框架中更新实体?

来自分类Dev

如何在EntityFramework中按相关实体排序

来自分类Dev

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

来自分类Dev

如何在实体框架中实现多个包含?

来自分类Dev

实体框架核心Linq查询以过滤相关实体

来自分类Dev

如何在实体框架中包含关联的实体?

来自分类Dev

原则:按相关值过滤实体

来自分类Dev

如何在实体框架中识别DbContext?

来自分类Dev

实体框架加载相关实体

来自分类Java

CrudRepository:按多个相关实体查找

来自分类Dev

实体框架:如何在一种相关实体上启用级联删除

来自分类Dev

IEntityChangeTracker的多个实例不能引用实体对象。在实体框架4.1中向实体添加相关对象时

来自分类Dev

如何根据相关集合中实体的值进行过滤?

来自分类Dev

如何使用核心数据中的子查询按多个关系计数过滤实体

来自分类Dev

如何在实体框架中动态构造按表达式排序?

来自分类Dev

如何使用实体框架删除相关字段

来自分类Dev

在游戏框架中订购相关实体

来自分类Dev

如何清除实体框架中的跟踪实体

来自分类Dev

实体框架查询单个查询中的相关实体

来自分类Dev

使用 Linq 在实体框架中查询嵌套/相关实体

来自分类Dev

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

来自分类Dev

如何在实体框架支持的 datagridview 上使用多个查询?

来自分类Dev

如何在RASA中识别多个实体

来自分类Dev

如何在实体框架中的多个数据库之间共享类?

来自分类Dev

按相关实体搜索

来自分类Dev

如何使用实体框架从多个表中检索数据

来自分类Dev

实体框架中按属性求和的相关集合的总和(延迟加载)

Related 相关文章

  1. 1

    如何在实体框架中过滤“包含”实体?

  2. 2

    如何按多个单词过滤C#实体框架

  3. 3

    如何在实体框架中更新实体?

  4. 4

    如何在EntityFramework中按相关实体排序

  5. 5

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

  6. 6

    如何在实体框架中实现多个包含?

  7. 7

    实体框架核心Linq查询以过滤相关实体

  8. 8

    如何在实体框架中包含关联的实体?

  9. 9

    原则:按相关值过滤实体

  10. 10

    如何在实体框架中识别DbContext?

  11. 11

    实体框架加载相关实体

  12. 12

    CrudRepository:按多个相关实体查找

  13. 13

    实体框架:如何在一种相关实体上启用级联删除

  14. 14

    IEntityChangeTracker的多个实例不能引用实体对象。在实体框架4.1中向实体添加相关对象时

  15. 15

    如何根据相关集合中实体的值进行过滤?

  16. 16

    如何使用核心数据中的子查询按多个关系计数过滤实体

  17. 17

    如何在实体框架中动态构造按表达式排序?

  18. 18

    如何使用实体框架删除相关字段

  19. 19

    在游戏框架中订购相关实体

  20. 20

    如何清除实体框架中的跟踪实体

  21. 21

    实体框架查询单个查询中的相关实体

  22. 22

    使用 Linq 在实体框架中查询嵌套/相关实体

  23. 23

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

  24. 24

    如何在实体框架支持的 datagridview 上使用多个查询?

  25. 25

    如何在RASA中识别多个实体

  26. 26

    如何在实体框架中的多个数据库之间共享类?

  27. 27

    按相关实体搜索

  28. 28

    如何使用实体框架从多个表中检索数据

  29. 29

    实体框架中按属性求和的相关集合的总和(延迟加载)

热门标签

归档