私は答えが分かりませんが、おそらく少し恥ずかしい質問があります。私は多対多の流暢API使用する関係を構成しEntity Frameworkで複数の関連エンティティをフィルタリングする方法
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; }
}
:私は、次のエンティティを持っている
modelBuilder.Entity<Post>()
.HasMany(p => p.Tags)
.WithMany()
.Map(m =>
{
m.MapLeftKey("PostId");
m.MapRightKey("TagId");
m.ToTable("PostTags");
});
を私はタグのリストで記事をフィルタリングする(だけのリターン指定されたすべてのタグを持つ記事):
tags
は、ユーザーが指定したタグのリストであり、私の
Tag
エンティティがに上書きその
Equals
メソッドを持ってい
context.Posts.Where(p => p.Tags.Any(t => tags.Contains(t)))
Id
プロパティに基づいている必要があります。私は、クエリを実行したときしかし、私は取得NotSupportedException
:
型「System.NotSupportedException」の例外がEntityFramework.SqlServer.dllで発生したが、ユーザーコードで
追加情報は処理されませんでした。作成できませんが'Plog.Domain.Plog.Tag'型の定数値です。このコンテキストでは、プリミティブ型または列挙型のみがサポートされています。
どのようにすれば合理的なパフォーマンスが得られますか?
私はtagsが 'Tag'のリストであると仮定していますか?そうであれば、それは問題です – Balah