如何解决将 Npgsql ADO 实体框架与 jsonb 一起使用
我的测试数据库是基于这个
create table test
(
id int primary key,b text,i int,name_1 text,name_2 text,alt_names jsonb
);
我通过 nuget 添加了 EntityFramework6.Npgsql
,看起来它包含了一些依赖项
当我首先使用数据库构建数据模型时,我可以看到除 alt_names
jsonb 列之外的每一列。
此页面 Supported Types and their Mappings 表明默认支持 jsonb。
我错过了什么吗?
解决方法
当你直接拉取为 jsonb 时,它可能无法如愿获得,或者它可能会作为错误返回。另外,如果我是你,我会先创建视图。如果你有问题,你可以改变nuget。 Postgresql 代码:
create or replace view public.testview
as select
t.id,t.b,t.i,t.name_1,t.name_2,json_build_object('alt_names',t.alt_names) as alt_names
from test t;
c# 代码:
using Npgsql;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var cs = "Host=localhost;Username=postgres;Password=123456;Database=postgres";
using var con = new NpgsqlConnection(cs);
con.Open();
var sql = "select * from public.testview";
using var cmd = new NpgsqlCommand(sql,con);
NpgsqlDataReader dr = cmd.ExecuteReader();
List<object> list = new List<object>();
var i = 0;
while (dr.Read())
{
while (i<dr.FieldCount)
{
list.Add(dr[i]);
i++;
}
}
Console.WriteLine(list[5].ToString());
//"{\"alt_names\" : \"test\"}"
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。