C# 如何在ASP.NETMVC中使用SaveChanges时获取自动生成的ID。我目前的方法似乎效率低下

C# 如何在ASP.NETMVC中使用SaveChanges时获取自动生成的ID。我目前的方法似乎效率低下,c#,asp.net,sql-server,asp.net-mvc,entity-framework,C#,Asp.net,Sql Server,Asp.net Mvc,Entity Framework,我有一张学生桌 ( (ID INT PRIMARY KEY IDENTITY(1,1), NAME NVARCHAR(50) NOT NULL, ..... ) 模型定义是 [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int ID { get; set; } [Column("NAME")] [Required(AllowEmptyStr

我有一张学生桌

(
    (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; }
    ........
每当我在Student表中使用

isDAL.StudentTable.Add(scTemp.StudentInfo);
isDAL.SaveChanges();
这里isDAL是从实体框架继承DBContext类的数据访问层

现在我正在使用一个触发器,它获取ID并将其存储在LASTINSERTED表中,该表定义为

CREATE TABLE LASTINSERTED
(
    INT INSERTEDID
)
我使用以下代码来获得它

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

获取ID后,表中的数据将被删除。有更好的办法吗?创建一个额外的记录,再次查询表似乎效率低下

这里不需要使用触发器。只需按如下所示操作即可

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

多容易啊…:D

您不需要在此处使用触发器。只需按如下所示操作即可

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

多容易啊…:D

在调用
SaveChanges()
后,只需使用
scTemp.StudentInfo.ID
获取值,在调用
SaveChanges()
后,只需使用
scTemp.StudentInfo.ID