私はEntity Framework 5データベースの最初のアプローチを使用しています。今私はテーブルにデータを挿入して、再びIDENTITY
を返しています。ストアドプロシージャを使用してEntity FrameworkでIDを取得する方法?
ALTER PROCEDURE [dbo].[spAdmissonSlip_Insert]
(
@paramStdClassID int,
@paramFeeMonth varchar(20),
@paramAdmissionFee int = null,
@paramTutionFee int,
@paramFeeSlip int = null,
@paramResultFile int = null,
@paramExamFee int = null,
@paramSciCompFee int = null,
@paramExtra int =null
)
AS
BEGIN
insert into tblFee
values (@paramStdClassID, @paramFeeMonth, NULL, @paramAdmissionFee,
@paramTutionFee, @paramFeeSlip, @paramResultFile,
@paramExamFee, @paramSciCompFee, @paramExtra, 0);
select @@IDENTITY;
END
私の質問はこのフロントエンドでIDENTITY
を取得する方法です。出力パラメータを使用する必要があるかどうか、あるいはこれを得るには別の方法がinteger
変数にあります。
ここには呼び出しステートメントがあります。
int FeeID = Convert.ToInt32 (OE.spAdmissonSlip_Insert(obj.StdClassID, obj.FeeMonth, obj.AdmissionFee, obj.TutionFee,
obj.FeeSlip, obj.ResultFile, obj.ExamFee, obj.SciCompFee, obj.Extra));
そして、これは、メソッドの定義である
...public ObjectResult<spAdmissonSlip_Insert_Result> spAdmissonSlip_Insert(Nullable<global::System.Int32> paramStdClassID, global::System.String paramFeeMonth, Nullable<global::System.Int32> paramAdmissionFee, Nullable<global::System.Int32> paramTutionFee, Nullable<global::System.Int32> paramFeeSlip, Nullable<global::System.Int32> paramResultFile, Nullable<global::System.Int32> paramExamFee, Nullable<global::System.Int32> paramSciCompFee, Nullable<global::System.Int32> paramExtra)
{
...
}
PS:私はEFに新たなんです。
すでにIDENTITYを選択しているため、EFはプロシージャの戻り値の型を整数として検出する必要があります。 –
ストアドプロシージャをEFモデルにマップしましたか? – Thomas
@BassemAKIそれは列を返すので、EFは複合型に変換しました。私は今どうすればいい? –