-1

我有一张桌子Student。该表有一个ID自动递增的列。我想编写一个存储过程来添加一个新学生并返回ID. 我是这方面的新手。

这是我的代码。请检查它是否错误并为我修复并告诉我如何编写代码以在 C# 中使用它。我使用了实体框架 4。

@Name NVARCHAR(50),
@Birthday DATETIME, 
@ID bigint OUTPUT 
AS 
BEGIN
    SET XACT_ABORT ON 

    BEGIN 
       INSERT INTO [Student](Name, Birthday) VALUES (@Name, @Birthday);  
       SELECT @ID = SCOPE_IDENTITY()
    END
END
4

3 回答 3

3

最好在C#使用.SPEF4

使用实体框架,这一切都是自动为您完成的。

using (MyEntities context = new MyEntities())
{
    var student =  new Student()
    {
      Name = "some value",
      Birthday = "some Birthday"
    };

    context.Students.AddObject(student);

    context.SaveChanges();

    int ID = student.ID; // You will get here the Auto-Incremented table ID value.
}

保存在 Entity Framework 中将自动更新“自动增量”ID 列。您只需在调用 .SaveChanges(); 后将其读出即可。

编辑:

如果您在获取“自动增量”ID 值时遇到任何问题,也请阅读这篇文章。

于 2012-11-06T03:26:13.053 回答
0
@Name NVARCHAR(50),
@Birthday DATETIME, 
@ID bigint OUTPUT
AS
BEGIN
SET XACT_ABORT ON   
BEGIN 

    INSERT INTO [Student](Name,Birthday)
    VALUES(@Name,@Birthday);

    SELECT @ID = SCOPE_IDENTITY()
END

我只是在字段之间添加了逗号

于 2012-11-06T03:09:10.237 回答
-1

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.aspx

这应该为您提供构建调用存储过程的 C# 应用程序所需的所有信息。

于 2012-11-06T03:02:13.693 回答