-1

私はテーブルを持っていますStudent。このテーブルには、ID自動インクリメントの列があります。新しい学生を追加して返すストアドプロシージャを作成したいと思いますID。私はこれで初心者です。

これは私のコードです。それが間違っているかどうかを確認して修正し、C#で使用するためのコーディング方法を教えてください。EntityFramework4を使用しました。

@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

Entity Frameworkを使用すると、これはすべて自動的に行われます。

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 に答える