我如何使用实体框架获取插入记录的ID

时间:2018-07-04 06:17:56

标签: c# asp.net sql-server entity-framework entity

我在Asp.net中遇到实体框架问题。每当我向SQL数据库表中添加记录时,我都想获取Id值。我怎样才能做到这一点? 这是我的代码:

StoredProcedure 



USE [Sapphiresworld]
GO
/****** Object:  StoredProcedure [dbo].[addProduct]    Script Date: 7/4/2018 10:25:41 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Proc [dbo].[addProduct]
@title nvarchar(250),
@price nvarchar(50),
@unitID int,
@date nvarchar(50),
@subCategoryID  int,
@brandID int,
@vat int,
@discount int,
@picture nvarchar(50),
@stock int
as
declare @MyVal int=0
INSERT into [PRODUCT] values (@title,
@price ,
@unitID,
@date,
@subCategoryID  ,
@brandID ,
@vat ,
@discount ,
@picture ,
@stock)
Set @MyVal = @@IDENTITY
Select @MyVal as Val

这里是ClsBrand

        public string AddBrand(string brandName)
   {
   var result = new SapphiresworldEntities().AddBrand(brandName).ToString();

        return result;       
   }

针对保存按钮的代码

  protected void Btnsave_Click(object sender, EventArgs e)
{
            clsBrand nb = new clsBrand();
      string nwBran = nb.AddBrand(relig.Text);

}

4 个答案:

答案 0 :(得分:1)

在Entity框架中调用保存更改方法后,将自动填充ID(假设您在表中将ID作为标识列)

答案 1 :(得分:0)

Id值将在插入记录后自动填充。您只需从objectname.Id中获取值即可。

答案 2 :(得分:0)

根据上述答案,插入记录后,id值将自动填充。

这里是例子。

您的DataModel类,例如

public class MyDataModel
{
    [Key]
    public int Id {get; set;}
    public string TestData {get; set;}
}

,当您要使用实体框架插入数据时,请使用此

public bool SaveMethodInDataBase(MyDataModel myDataModel)
{
     MyDataModel result = _dbContext.MyDataModel.Add(myDataModel);
     _dbContext.SaveChanges();
}

然后,此result将返回带有ID的数据。如果创建了_dbContext,则为SPContext

尝试一下。

答案 3 :(得分:0)

完整解决方案

public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public async Task<IActionResult> Create([Bind("Id,Name")] Student student)
{
    if (ModelState.IsValid)
    {
        _context.Add(student);
        await _context.SaveChangesAsync();

        //Here your Id Value after insert record
        int StudentId = student.Id;

        return RedirectToAction(nameof(Index));
    }
    return View(student);
}

希望您能理解,这将对您有所帮助。