使用具有默认值的 EF Core FromSql returns 实例将存储过程结果映射到自定义 class
Mapping stored procedure results to a custom class using EF Core FromSql returns instances with default values
我有一个这样的存储过程:
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 执行它。
我已经使用了提到的方法。
我有一个自定义 C# class AktivniRelaceUzivatele
映射 QRelaceUzivatele_Aktivni
视图的字段。
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 class 我添加了:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Query<AktivniRelaceUzivatele>();
我没有收到编译错误,存储过程被执行,但结果值没有插入到对象的属性中,而是我得到的实例只包含默认值,如 null
、0 等
您可以尝试将 public class 变量添加到 class 变量吗?我想我遇到了类似的问题,我错过了 getter 和 setter 以及 public classifier。
我有一个这样的存储过程:
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 执行它。
我已经使用了提到的方法
我有一个自定义 C# class AktivniRelaceUzivatele
映射 QRelaceUzivatele_Aktivni
视图的字段。
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 class 我添加了:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Query<AktivniRelaceUzivatele>();
我没有收到编译错误,存储过程被执行,但结果值没有插入到对象的属性中,而是我得到的实例只包含默认值,如 null
、0 等
您可以尝试将 public class 变量添加到 class 变量吗?我想我遇到了类似的问题,我错过了 getter 和 setter 以及 public classifier。