値を返すストアドプロシージャを呼び出そうとしています。しかし、いくつかの理由で、それが値を返していない、それは代わりにエラーを投げています:これは想定している私のモデルクラスであるEntity Frameworkと.Net Core 1.1を使用してデータを返すストアドプロシージャを呼び出す方法
var arTransactionid = context.Set<ARTransaction>()
.FromSql("core.ARTransaction_Insert @PersonID = {0},@ContractID = {1},@TransactionCodeID = {2},@TransactionDate = {3}," +
"@TransactionDesc = {4},@Amount = {5},@CurrencyID = {6},@ExchangeRate = {7}," +
"@BaseAmount = {8},@PostedDate = {9},@DueDate = {10},@Reference = {11}," +
"@Reference2 = {12},@Reversal = {13},@BaseAdjustment = {14},@BatchID = {15}," +
"@ParentTransactionID = {16},@InvoiceID = {17},@UserID = {18}", 46736, null, 197, "2017-08-25 00:00:00 -05:00", null, 501.0000, 2, 1, 501.0000, null, null, null, null, 0, 0, null, 0, null, 3052)
.FirstOrDefault();
:
私はこのようなストアドプロシージャを呼び出していますストアドプロシージャからの戻り値で満たされる:
public class ARTransaction
{
public String arTransactionID { set; get; }
}
これは、ストアドプロシージャは、次のとおり
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [core].[ARtransaction_Insert]
@PersonID int,
@ContractID int,
@TransactionCodeID int,
@TransactionDate date,
@TransactionDesc nvarchar(100),
@Amount money,
@CurrencyID int,
@ExchangeRate decimal(18,6),
@BaseAmount money,
@PostedDate DATE = null,
@DueDate date,
@Reference nvarchar(50),
@Reference2 nvarchar(50),
@Reversal BIT = 0,
@BaseAdjustment BIT = 0,
@BatchID int,
@ParentTransactionID int,
@InvoiceID INT = null,
@UserID INT,
@SessionGUID UNIQUEIDENTIFIER = null
AS
SET NOCOUNT ON
DECLARE @ARtransactionID INT,
@Valid INT,
@ValidMessage NVARCHAR(100)
--More code goes here ***********
RETURN @ARtransactionID
SQL Server Management Studioでストアドプロシージャを呼び出すと、値は返されず、メッセージのみが返されます。結果を得るために
、Iは、変数を宣言し、ストアドプロシージャに割り当てます。
DECLARE @arTransctionInserted int;
EXEC @arTransctionInserted = core.ARTransaction_Insert
@PersonID = 46736,
@ContractID = NULL,
@TransactionCodeID = 197,
@TransactionDate = '2017-08-25 00:00:00 -05:00',
@TransactionDesc = NULL,
@Amount = 500.0000,
@CurrencyID = 2,
@ExchangeRate = 1,
@BaseAmount = 500.0000,
@PostedDate = NULL,
@DueDate = NULL,
@Reference = NULL,
@Reference2 = NULL,
@Reversal = 0,
@BaseAdjustment = 0,
@BatchID = NULL,
@ParentTransactionID = 0,
@InvoiceID = NULL,
@UserID = 3052;
SELECT @arTransctionInserted as IDTransaction;
はどうやって値を返すストアドプロシージャを呼び出すことができますか?
context.Set<ARTransaction>().FromSql("")
すでにすべてのクエリを含めて呼び出そうとしましたが、エラーはスローされ続けます。
var arTransactionid = context.Set<ARTransaction>().FromSql("DECLARE @arTransctionInserted int; exec @arTransctionInserted = core.ARTransaction_Insert @PersonID = {0},@ContractID = {1},@TransactionCodeID = {2},@TransactionDate = {3}," +
"@TransactionDesc = {4},@Amount = {5},@CurrencyID = {6},@ExchangeRate = {7}," +
"@BaseAmount = {8},@PostedDate = {9},@DueDate = {10},@Reference = {11}," +
"@Reference2 = {12},@Reversal = {13},@BaseAdjustment = {14},@BatchID = {15}," +
"@ParentTransactionID = {16},@InvoiceID = {17},@UserID = {18};SELECT @arTransctionInserted as IDTransaction;", 46736, null, 197, "2017-08-25 00:00:00 -05:00", null, 501.0000, 2, 1, 501.0000, null, null, null, null, 0, 0, null, 0, null, 3052).FirstOrDefault();
ここでsprocの中にselectステートメントを投稿できますか? – Nathan
あなたはSPの欠けている部分に言及していますか? – mavi
はい、それを確認することは本当に役立つかもしれません。 – Nathan