2016-09-04 4 views
1

は、私は私が使用して学生のテーブルにレコードを挿入するたびに、データベースに自動生成されたIDを取得する必要がありStudentTableASP.Net MVCでSaveChangesを使用するときに自動生成されたIDを取得する方法。私の現在の方法は非効率的な

(
    (ID INT PRIMARY KEY IDENTITY(1,1), 
    NAME NVARCHAR(50) NOT NULL, 
    ..... 
) 

モデル定義が

[Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int ID { get; set; } 

    [Column("NAME")] 
    [Required(AllowEmptyStrings=false, ErrorMessage="Name is required")] 
    public string Name { get; set; } 
    ........ 

である持っているようです

isDAL.StudentTable.Add(scTemp.StudentInfo); 
isDAL.SaveChanges(); 

ここで、isDALは、Entity FrameworkからDBContextクラスを継承するデータアクセスレイヤーです。

今私は、私はそれが

intGeneratedID = isDAL.LASTINSERTED.ToList<Inserted>()[0].InsertedID; 

挿入され得るために、次のコードを使用し

CREATE TABLE LASTINSERTED 
(
    INT INSERTEDID 
) 

として定義されてLASTINSERTEDテーブル内のIDと格納を取得し、トリガーを使用しています

public class Inserted 
    { 
     [Required] 
     [Column("InsertedId")] 
     public int InsertedID { get; set; } 
    } 

IDを取得すると、次のように定義されます。テーブル内のaが削除されます。より良い方法がありますか?余分なレコードを作成し、再度テーブルをクエリするのは効率が悪いようです。

+1

あなただけの値が 'scTemp.StudentInfo.ID'を使用して取得し、'のSaveChanges() 'と呼ばれた後 –

答えて

4

ここでトリガーを使用する必要はありません。ちょうど以下のようにしてください。それはどのように簡単

isDAL.StudentTable.Add(scTemp.StudentInfo); 
isDAL.SaveChanges(); 
var yourPkId=scTemp.StudentInfo.ID;//this is your Auto generated PK Id 

...:D

関連する問題