我有一個 - 也許有點尷尬 - 問題,我無法找出答案。我有以下實體:如何在實體框架中由多個相關實體過濾
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