我按以下方式调用存储过程。但是当我在sqlProfiler中观察它时,实体框架没有调用来执行存储过程。
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 的数据阅读器。
但我的存储过程只更新记录而且不会返回任何内容。现在我该如何调用我的存储过程。
答案 0 :(得分: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));