我有一个 - 也许有点尴尬 - 问题,我无法找出答案。我有以下实体:如何在实体框架中由多个相关实体过滤
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
:
“System.NotSupportedException”类型的异常出现在EntityFramework.SqlServer.dll但在用户代码中没有处理
其他信息:无法创建类型为“Plog.Domain.Plog.Tag”的常量值。只有原始类型或枚举类型在此上下文中受支持。
我怎样才能使这项工作的方式也是合理的表现?
我假设标签是一个'标签'列表?如果是这样,这就是问题 – Balah