gpt4 book ai didi

c# - 带有 postgres 的 dotnet core 2.2 EntityFramework

转载 作者:行者123 更新时间:2023-11-30 15:51:03 25 4
gpt4 key购买 nike

我关注了 documentation on Postgres C# website .

当我运行这段代码时,我得到:

The entity type 'Bar' requires a primary key to be defined.

POCO:

public class Foo
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }

public string Name { get; set; }

[Column(TypeName = "jsonb")]
public Bar Bar { get; set; }
}

public class Bar
{
public string Prop1 { get; set; }

public string Prop2 { get; set; }
}

我的目标是避免使用 string 作为 Bar 的属性类型,让 Entity Framework 处理 JSON 序列化、反序列化。我不希望 Bar 成为一个单独的表格。我希望它成为 Foo 上的 JSON 列。

最佳答案

您需要创建 ValueConverter<Bar, string>或者直接在HasConversion中使用函数表达式在上OnModelCreating .

例子:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Foo>()
.Property(x => x.Bar)
.HasConversion(
v => JsonConvert.SerializeObject(v),
v => JsonConvert.DeserializeObject<Bar>(v));

base.OnModelCreating(modelBuilder);
}

引用: https://learn.microsoft.com/en-us/ef/core/modeling/value-conversions

关于c# - 带有 postgres 的 dotnet core 2.2 EntityFramework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58123451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com