【发布时间】:2021-11-30 15:36:24
【问题描述】:
好的,所以我有一个在 ASP.NET 中开发的 API,其中包含所有 CRUD 方法。其中一个模型如下所示:
public class Client
{
public int Id { get; set; }
public string First_Name { get; set; }
public string Second_Name { get; set; }
public string First_Last_Name { get; set; }
public string Second_Last_Name { get; set; }
public string Phone { get; set; }
[DataType(DataType.Date)]
public DateTime Birth_Date { get; set; }
public string Password { get; set; }
public string User { get; set; }
}
GetAllClients 方法如下所示:
public async Task<IEnumerable<Client>> GetAllClients()
{
var db = dbConnection();
var sql = @"
SELECT id, first_name, second_name, first_last_name, second_last_name, phone, birth_date, _password, _user
FROM public.""Clients"" ";
return await db.QueryAsync<Client>(sql, new { });
}
但是当password 和user 属性在数据库中有值时,它们会到达空值。这是我得到的回复:
[
{
"id": 101110111,
"first_Name": "Primer Nombre",
"second_Name": "Segundo Nombre",
"first_Last_Name": "Primer Apellido",
"second_Last_Name": "Segundo Apellido",
"phone": "11111111",
"birth_Date": "2021-01-01T00:00:00",
"password": null,
"user": null
},
{
"id": 202220222,
"first_Name": "Nombre1",
"second_Name": "SegNombre1",
"first_Last_Name": "Apellido1",
"second_Last_Name": "SegApellido1",
"phone": "22222222",
"birth_Date": "2000-01-01T00:00:00",
"password": null,
"user": null
}
]
我知道在数据库中明确显示密码是一种不好的做法,但现在我正在使用给定密码和用户的身份验证,但如果它们在响应中为空,我就不能这样做。 我以为这是属性的名称,但不是。 顺便说一句,如果有帮助,我必须使用 postgreSQL。
这是表定义:
CREATE TABLE IF NOT EXISTS public."Clients"
(
id integer NOT NULL,
first_name text COLLATE pg_catalog."default" NOT NULL,
second_name text COLLATE pg_catalog."default",
first_last_name text COLLATE pg_catalog."default" NOT NULL,
second_last_name text COLLATE pg_catalog."default",
phone text COLLATE pg_catalog."default" NOT NULL,
birth_date date NOT NULL,
_password text COLLATE pg_catalog."default" NOT NULL,
_user text COLLATE pg_catalog."default" NOT NULL,
CONSTRAINT "Clients_pkey" PRIMARY KEY (id)
);
谢谢!
【问题讨论】:
-
检查
db.QueryAsync<Client>的输出。如果你在那里看到密码,这意味着你有某种特殊的序列化器知道取出这些片段。另一方面,您不应该在模型中完全设置密码。 -
@T.S.在第一个中,您的意思是该方法接收密码但某些序列化程序将其隐藏?而在第二种情况下,更好的方法是使用与 Client 表相关的 id 和密码不同的表?
-
为什么在sql语句中使用
_password和_user而不是password和user? -
@JialeXue-MSFT 我知道这很奇怪,但由于某种原因,我在使用
password和user时遇到了错误。但不适用于id、name...如果它有效,我猜不要改变它 -
@JialeXue-MSFT 不错。 OP 应该发布表定义
标签: c# postgresql api .net-core visual-studio-2019