pbn*_*pbn 7 c# entity-framework npgsql asp.net-core
假设我们有一个如下所示的实体类:
public class SerializedEntity
{
public JsonDocument Payload { get; set; }
public SerializedEntity(JsonDocument payload)
{
Payload = payload;
}
}
Run Code Online (Sandbox Code Playgroud)
根据npsql这会生成一个表,该表payload的类型jsonb为此类,这是正确的。
现在我想做的是获取任何类实例并将其存储payload在此表中,例如:
public class Pizza {
public string Name { get; set; }
public int Size { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后应该可以作为具有以下结构的对象进行检索:
{Name: "name", Size: 10}
Run Code Online (Sandbox Code Playgroud)
所以我需要这样的东西:
var pizza = new Pizza("Margharita", 10);
var se = new SerializedEntity(someConverter.method(pizza))
Run Code Online (Sandbox Code Playgroud)
Mar*_*tin 14
您可以使用.NET 6 中添加的JsonSerializer.SerializeToDocument 。在您的情况下,您最终会得到以下结果:
var pizza = new Pizza("Margharita", 10);
var se = new SerializedEntity(JsonSerializer.SerializeToDocument(pizza))
Run Code Online (Sandbox Code Playgroud)
使用System.Text.Json有点尴尬但可能:
using System.Text.Json;
using System.Text.Json.Serialization;
var pizza = new Pizza("Margharita", 10);
var se = new SerializedEntity(JsonDocument.Parse(JsonSerializer.Serialize(pizza)));
Run Code Online (Sandbox Code Playgroud)
自(我认为)v3.0 以来,它已内置到 dotnet core 中,因此您不需要任何额外的第 3 方库。只是不要忘记usings。
不过,可能有一些技巧可以让解析更高效(使用异步 API,也许或者像 Magnus 建议的那样,通过使用序列化为二进制SerializeToUtf8Bytes)。
我还没有找到任何直接从T或object到的方法JsonDocument。我不敢相信这在某种程度上是不可能的。如果您知道它是如何工作的,请发表评论或添加您的答案。
| 归档时间: |
|
| 查看次数: |
3235 次 |
| 最近记录: |