Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架。无法检索数据_C#_Sql_Entity Framework_Linq - Fatal编程技术网

C# 实体框架。无法检索数据

C# 实体框架。无法检索数据,c#,sql,entity-framework,linq,C#,Sql,Entity Framework,Linq,我遇到了非常奇怪的行为,我真的不知道这可能与什么有关。我尝试了两种方法来检索数据:纯LINQ和存储过程,但数据不会返回。没有错误或例外。在SQL Server端,我可以从探查器中看到存储过程已经执行 public async Task<IEnumerable<OrdersDto>> GetAll(int userid) { OrdersDto[] result; try { SqlParameter param = new SqlP

我遇到了非常奇怪的行为,我真的不知道这可能与什么有关。我尝试了两种方法来检索数据:纯LINQ和存储过程,但数据不会返回。没有错误或例外。在SQL Server端,我可以从探查器中看到存储过程已经执行

public async Task<IEnumerable<OrdersDto>> GetAll(int userid)
{
    OrdersDto[] result;
    try
    {
        SqlParameter param = new SqlParameter("@UserId", userid);
        result = await _db.Database.SqlQuery<OrdersDto>("UserOrders @UserId", param).ToArrayAsync();
        //var result = await _db.Order.Where(x=> x.CustomerId == 1)
        //    .Include(x => x.OrderDetails)
        //    .Include(x => x.OrderStatus)
        //    .Include(x => x.PaymentStatus)
        //    .AsNoTracking().ToArrayAsync();
    }
    catch (Exception ex)
    {
        throw new Exception(ex.Message);
    }
    return result;
} 
public异步任务GetAll(int userid)
{
OrdersDto[]结果;
尝试
{
SqlParameter param=新的SqlParameter(“@UserId”,UserId);
result=await_db.Database.SqlQuery(“UserOrders@UserId”,param).ToArrayAsync();
//var result=await_db.Order.Where(x=>x.CustomerId==1)
//.Include(x=>x.OrderDetails)
//.Include(x=>x.OrderStatus)
//.包括(x=>x.PaymentStatus)
//.AsNoTracking().ToArrayAsync();
}
捕获(例外情况除外)
{
抛出新异常(例如消息);
}
返回结果;
} 

当到达
等待
时,线程将返回给调用者。检查
等待
结果时,由于您没有等待任务完成,因此无法获得结果。如果同步运行查询,则可以看到所需的结果:

result = _db.Database.SqlQuery<OrdersDto>("UserOrders @UserId", param).ToArray();
result=_db.Database.SqlQuery(“UserOrders@UserId”,param).ToArray();

异步运行此代码没有问题,但您应该仅在任务完成时检查结果:

当到达您的
等待
时,线程将返回给调用者。检查
等待
结果时,由于您没有等待任务完成,因此无法获得结果。如果同步运行查询,则可以看到所需的结果:

result = _db.Database.SqlQuery<OrdersDto>("UserOrders @UserId", param).ToArray();
result=_db.Database.SqlQuery(“UserOrders@UserId”,param).ToArray();

异步运行此代码没有问题,但您应该仅在任务完成时检查结果:

是否已检查连接字符串是否已尝试同步运行?看看它是否能正常工作?@wandos,应用程序中有很多查询工作正常,所以这不是确定的连接字符串。@s.Akbari,不,但这是个好主意。让我试试。你说数据不回来是什么意思?还有什么是用于保存SP结果的
OrdersDto
-实体模型类还是just类?是否检查了连接字符串是否尝试同步运行?看看它是否能正常工作?@wandos,应用程序中有很多查询工作正常,所以这不是确定的连接字符串。@s.Akbari,不,但这是个好主意。让我试试。你说数据不回来是什么意思?还有什么是
OrdersDto
-实体模型类还是仅用于保存SP结果的类?