2016-07-15 5 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)); 

私は、その後のSQLProfilerに記録されている呼び出し上記の文の末尾に.Tolist()、.FirstOrDefault()などを追加することによって、自分のコードを変更するが、それはDataReaderを満たし、データからレコードをマッピング開始した場合私が渡した通りの読者TEntity

しかし、私のストアドプロシージャはレコードのみを更新し、何も返しません。今私のストアドプロシージャを呼び出すことができます。

答えて

1

の代わりにobjUnit.dbContext.Database.ExecuteSqlCommandを使用してください。

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)); 
関連する問題