Entity Framework - Code First - リストを保存できない 質問する

Entity Framework - Code First - リストを保存できない 質問する

私は次のようなクラスを書きました:

class Test
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    [Required]
    public List<String> Strings { get; set; }

    public Test()
    {
        Strings = new List<string>
        {
            "test",
            "test2",
            "test3",
            "test4"
        };
    }
}

そして

internal class DataContext : DbContext
{
    public DbSet<Test> Tests { get; set; }
}

コードを実行した後:

var db = new DataContext();
db.Tests.Add(new Test());
db.SaveChanges();

データは保存されていますが、 だけですId。適用されるテーブルや関係はありません。文字列リスト。

何が間違っているのでしょうか?私も文字列 virtualしかし何も変わりませんでした。

助けてくれてありがとう。

ベストアンサー1

EF Core 2.1+:

財産:

public string[] Strings { get; set; }

モデル作成時:

modelBuilder.Entity<YourEntity>()
            .Property(e => e.Strings)
            .HasConversion(
                v => string.Join(',', v),
                v => v.Split(',', StringSplitOptions.RemoveEmptyEntries));

更新 (2021-02-14)

PostgreSQL には配列データ型があり、Npgsql EF Core プロバイダーはそれをサポートしています。そのため、C# 配列とリストは PostgreSQL 配列データ型に自動的にマップされ、追加の構成は必要ありません。また、配列を操作することもでき、その操作は SQL に変換されます。

詳細情報このページ

おすすめ記事