通过 Linq 从存储过程返回 null

本文关键字:返回 null 存储过程 Linq 通过 | 更新日期: 2023-09-27 18:36:58

我正在尝试通过 Web 服务从存储过程从 LINQ 到 SQL 获取返回。但是,当我不应该返回时,我不断返回空结果。我不确定出了什么问题。当我尝试直接通过 Linq to SQL 调用存储过程时,我能够成功地将结果绑定回 GridView。

但是当我尝试以下代码时,它不起作用:

实际.aspx.cs:

protected void LoginUsrBtn_Click(object sender, EventArgs e)
{
    DataTable dt = new DataTable();
    dt.Columns.Add("Id");
    dt.Columns.Add("Admin");
    dt.Columns.Add("Name");
    try
    {
        using (CustomWebService cws = new CustomWebService()){
            dt.Rows.Add(cws.LogInFunction("Ron", "5456"));
        }
    }
    catch
    {
        Label1.Text = "Error";
    }
}

网络服务:

  {
    DataTable dbtable = new DataTable();
    dbtable.Columns.Add("Id");
    dbtable.Columns.Add("Admin");
    dbtable.Columns.Add("Name");
    DataClassesDataContext dbcontext = new DataClassesDataContext();
    var query = (dbcontext.UserLogin(username, password)).SingleOrDefault(); 
    //returns data correctly
    if (query != null)
    {
        try
        {
                **//WHERE THE DATA DISAPPEARS:**
                dbtable.Rows.Add(query.Id, query.Admin, query.Name);
                return dbtable;
        }
        catch (Exception)
        {
            dbtable.Rows.Add(0, 0, 0);
            return dbtable;
        }
    }
    return dbtable;
}

通过 Linq 从存储过程返回 null

我设法通过更改(actual .aspx.cs)来修复它

dt.Rows.Add(cws.LogInFunction("Ron", "5456"));

自:

dt = (cws.LoginFunction("Ron", "5456"));

并且还要在将布尔 Admin 值传递到表行之前对其进行初始化:

bool initializedAdmin = (query.Admin.HasValue) 
                            ? query.Admin.Value 
                            : false;
dbtable.Rows.Add(query.Id, initializedAdmin, query.Name);