代码之家  ›  专栏  ›  技术社区  ›  Vojtěch Dohnal

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

  •  0
  • Vojtěch Dohnal  · 技术社区  · 6 年前

    我有这样一个存储过程:

    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
    

    我使用了上面提到的方法 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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Naruto    6 年前