2016-07-15 76 views
0

我以下面的方式调用存储过程。但是当我在sqlProfiler中观察它时,实体框架没有调用存储过程。程序不会在使用DbRawSqlQry的实体框架中调用

objUnit.dbContext.Database.SqlQuery<ResellerCustomerFile>("USP_ResellerCustomerFile_DeleteFiles @CustomerId, @FileId, @IsFile", 
       new SqlParameter("@CustomerId", customerId), 
       new SqlParameter("@FileId", fileId), 
       new SqlParameter("@IsFile", 1)); 

如果我改变我的代码加入.Tolist(),.FirstOrDefault()等在上面的语句然后调用记录在SqlProfiler的结束,但它填补的DataReader,并开始从映射数据记录读者,因为我已经通过TEntity

但我的存储过程只更新记录,不返回任何东西。现在我怎样才能调用我的存储过程。

回答

1

使用objUnit.dbContext.Database.ExecuteSqlCommand而不是objUnit.dbContext.Database.SqlQuery<ResellerCustomerFile>

SqlQuery预计返回值,这就是为什么你必须声明ResellerCustomerFile作为通用返回类型。

ExecuteSqlCommand是一个没有返回值的命令,用这个方法直接执行你的命令。

objUnit.dbContext.Database.ExecuteSqlCommand("USP_ResellerCustomerFile_DeleteFiles @CustomerId, @FileId, @IsFile", 
    new SqlParameter("@CustomerId", customerId), 
    new SqlParameter("@FileId", fileId), 
    new SqlParameter("@IsFile", 1));