エンティティ フレームワーク、vb、および sql サーバーを使用します。
新しいレコードを挿入し、関連するレコードの新しい ID を返すストアド プロシージャ (以下に示す) があります (id 列は適切に定義された ID 列です)。ストアド プロシージャはエンティティ データ モデルにインポートされ、関数として呼び出されます。期待される結果は、新しいレコードの ID です。ただし、代わりに常に 0 が返されます。
ssms でストアド プロシージャを実行すると、結果ウィンドウに期待どおりの結果が表示され、値が 0 の別の結果も得られます (これは明らかに、マップされたストアド プロシージャに返されるものです)。
ストアド プロシージャにエラーがあるか、関数の呼び出し方法に問題があります (以下も参照)。あなたが提供しなければならない提案があれば、本当に感謝しています。
ストアド プロシージャ:
ALTER PROCEDURE [Finances].[CreatePurchaseInvoicePayment]
-- Add the parameters for the stored procedure here
@PurchaseInvoiceId int = NULL,
@SupplierId int = NULL,
@PurchaseInvoicePaymentDate date = NULL,
@Amount money = NULL,
@PaymentType int = NULL,
@ChequeNumber nchar(10) = NULL,
@BankAccountId int = NULL,
@purchaseInvoiceCreditNoteId int = NULL,
@ConversionFactor numeric(4,2) = NULL,
@ModifiedDate date = NULL,
@id int = NULL OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
INSERT INTO Finances.PurchaseInvoicePayments
VALUES
(
@PurchaseInvoiceId,
@SupplierId,
@PurchaseInvoicePaymentDate,
@Amount,
@PaymentType,
@ChequeNumber,
@BankAccountId,
@purchaseInvoiceCreditNoteId,
@ConversionFactor,
@ModifiedDate
)
SET @id = SCOPE_IDENTITY()
END
これは次のように呼び出されます:
Try
pipId = CInt(te.CreatePurchaseInvoicePayment(pip.PurchaseInvoiceId, pip.SupplierId, pip.PurchaseInvoicePaymentDate, pip.Amount, pip.PaymentType, pip.ChequeNumber, pip.BankAccountId, pip.PurchaseInvoiceCreditNoteId, pip.ConversionFactor, pip.ModifiedDate,nothing).FirstOrDefault)
Catch ex As Exception
私が言うように、誰かが私を正しい方向に向けることができれば、私は最も感謝しています.