質問: これが私の現在のEF Coreモデルです。 ``` public class Application { [Key] public string Name { get; set; } public HashSet Fields { get; set; } } ``` hashsetプロパティはそれ自体では機能しないため、これを`OnModelCreating`追加し`OnModelCreating` 。 ``` modelBuilder.Entity() .Property(e => e.Fields) .HasConversion( v => v.ToArray(), v => new HashSet(v)); ``` これでうまくいく場合もありますが、大きな問題があります。 最初にアプリケーションを挿入すると、ハッシュセットが文字列配列に正しく変換され、postgresql dbドライバがそれを正しく格納します。 ただし、後でアプリケーションを再度取得するときに、ハッシュセットを変更してから、 `.SaveChanges();`呼び出し`.SaveChanges();`それは動作しません! `ctx.Update(app);`を明示的に呼び出す`ctx.Update(app);`変更を保存するため。 これは、 `HashSet`インスタンスは変更されず、そのコンテンツのみが変更されるため、変更トラッカーは変更を確認できないためです(ただし、その理由について間違っている可能性があります)。 どうすれば修正できますか? ここの例にはHashSetが1つしかありませんが、他のモデルにはさらに多くのプロパティがあり、すべて同じ問題の影響を受けます。 * 変更トラッカーにそれらの変更を認識させる方法はありますか? * 変更されたことを「コンテナ」に通知する、ある種のカスタムコレクションを実装する方法はありますか? * ハッシュセット自体ではなく**、変換後に値**を確認するようにEFに指示することは可能ですか?
回答: これを確認しましたか: https : //stackoverflow.com/a/20712012/11649486 > Entity Frameworkは、プリミティブ型のコレクションをサポートしていません。エンティティ(別のテーブルに保存されます)を作成するか、文字列処理を行ってリストを文字列として保存し、エンティティがマテリアライズされた後にリストに入力することができます。 > >