[英]PostgreSQL JSONB serialization/de-serialization with Entity Framework Core 6 and .NET Core 6
我正在使用 .NET 6 框架探索 Microsoft Entity Framework Core 6.0.3。
我的目標數據庫是 PostgreSQL - 我正在使用Npgsql.EntityFrameworkCore.PostgreSQL
(6.0.3)。
我有兩節課
public class ExtendedData
{
public List<string> familyMembers { get; set; }
public List<string> phoneNumbers { get; set; }
}
public class Employee
{
public String Id { get; set; }
public String Name { get; set; }
public List<ExtendedData> Data { get; set; }
}
我編寫了以下代碼來從Employee
表中檢索數據:
List<Employee> list = db.Employees.Where(x => x.Id == "1234").ToList();
我能夠看到list[0].Id
, list[0].Name
按預期填充。 我還可以看到list[0].Data[0]
可用。
問題是我看不到list[0].Data[0].familyMembers
和list[0].Data[0].phoneNumbers
。
問題是,在 PostgreSQL 數據庫中, familyMembers
列實際上是Family Members
而phoneNumbers
是Phone Numbers
。
Employee
表的Data
列設置為jsonb
列,數據如下:
[
{
"Family Members": ["Mother", "Father", "Wife"],
"Phone Numbers": ["9998887765", "1123444444"]
}
]
我的問題是:如何將jsonb
列的 map Family Members
屬性放入我的 C# class 的familyMembers
數組中?
根據我的調查,如果我在數據庫中使用familyMembers
中的 familyMembers 屬性,它就可以工作
[
{
"familyMembers": ["Mother", "Father", "Wife"],
"phoneNumbers": ["9998887765", "1123444444"]
}
]
但是,使用JsonProperty("Family Members")
屬性不起作用。
public class ExtendedData
{
JsonProperty("Family Members")
public List<string> familyMembers { get; set; }
...
}
不是這樣——即使在這個例子中它沒有意義, Data
屬性必須是集合(列表類型)並且familyMembers
和phoneNumbers
是一個字符串列表。
謝謝,阿圖爾
我從https://www.npgsql.org/efcore/mapping/json.html?tabs=fluent-api%2Cpoco得到提示
我專注於JsonProperty ,但看起來另一個屬性JsonPropertyName起作用了。
public class ExtendedData
{
[System.Text.Json.Serialization.JsonPropertyName("Family Members")]
public List<string> familyMembers { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("Phone Numbers")]
public List<string> phoneNumbers { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.