私は次のようなクラスを書きました:
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 に変換されます。
詳細情報このページ。