【发布时间】:2016-04-03 22:02:14
【问题描述】:
我正在使用 Entity Framework 5 数据库优先方法。现在我将数据插入表中并再次返回IDENTITY。
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 模型?
-
@BassemAKl 它正在返回一列,因此 EF 已将其转换为复杂类型。我现在该怎么办?
-
@Thomas 对不起,我没有找到你。
-
复杂类型仅包含一个映射到@IDENTITY 的整数属性。您可以在调用映射方法 spAdmissonSlip_Insert() 后访问该属性。
标签: c# sql sql-server entity-framework