c# - 使用 EF Core FromSql 将存储过程结果映射到自定义类返回具有默认值的实例
问题描述
我有一个这样的存储过程:
CREATE PROCEDURE PLogin
@pin varchar(50), @ipaddress varchar(50)
AS
BEGIN
SET NOCOUNT ON;
//Some code here ...
SELECT * FROM [dbo].[QRelaceUzivatele_Aktivni] WHERE Pin = @pin AND IPAdresa=@ipaddress
END
我需要使用 EF Core 2.1 从 ASP MVC 执行它。
我使用了这里提到的方法。
我有一个AktivniRelaceUzivatele
映射QRelaceUzivatele_Aktivni
视图字段的自定义 C# 类。
public class AktivniRelaceUzivatele
{
int ProvozID { get; set; }
string NazevProvozu { get; set; }
int UzivatelID { get; set; }
string PIN { get; set; }
string Nick { get; set; }
在 MVC 控制器中,我调用:
var qpin = new SqlParameter("p", pin);
var qip = new SqlParameter("ip", ip);
var ar = db.Query<AktivniRelaceUzivatele>()
.FromSql("EXECUTE dbo.PLogin @pin=@p, @ipaddress=@ip", qpin, qip).FirstOrDefault();
在 dbContext 类中我添加了:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Query<AktivniRelaceUzivatele>();
我没有得到任何编译错误,存储过程被执行,但结果值没有插入到对象的属性中,而是我得到的实例只包含默认值null
,如 0 等。
解决方案
您可以尝试将公共分类器添加到类变量吗?我想我遇到了类似的问题,我错过了 getter 和 setter 以及公共分类器。
推荐阅读
- android - JSON解析改造2
- gstreamer - 使用 gstreamer srtp 进行音频流式传输
- elasticsearch - Elasticsearch 日期聚合
- go - 在 proto3 文件中使用 IP 字段(IPV4 或 IPV6)以供 Golang 和 C# 使用的更好方法是什么
- sorting - 如何对作为字符串的日期字段进行排序
- oracle - 双重会员运营商是做什么的?
- c - Simulink Embeded Coder 生成的 C 代码中定义的“rtmGetU”的目的是什么
- jquery - 如何隐藏最近
使用 jquery 动态生成且没有任何类或 id 的标签
- javascript - 如何用 reactJS 过滤?
- c# - 如何通过表单传递集合数据?