使用EF Core FromSql将存储过程结果映射到自定义类,将返回具有默认值的实例

时间:2018-10-08 13:39:13

标签: c# ef-core-2.1

我有一个这样的存储过程:

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执行它。

我使用了here中提到的方法。

我有一个自定义C#类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类中,我添加了:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Query<AktivniRelaceUzivatele>();

在存储过程执行时我没有遇到编译错误,但是结果值没有插入对象的属性中,相反,我得到的实例只包含默认值,例如null,0等。

1 个答案:

答案 0 :(得分:1)

您可以尝试将公共分类器添加到类变量吗?我想我遇到了类似的问题,在这里我既错过了getter,setter和公共分类器。