C# 如何使用实体框架获取插入记录的id

C# 如何使用实体框架获取插入记录的id,c#,asp.net,sql-server,entity-framework,entity,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 G

我对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
这是克莱斯布兰德

        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);

}

在实体框架中调用save changes方法后,ID将自动填充(假设您的表中有ID作为标识列)

在实体框架中调用save changes方法后,插入记录后,ID将自动填充(假设您的表中有ID作为标识列)

,Id值将自动填充。您只需从objectname.Id中获取类似的值。

插入记录后,Id值将自动填充。您只需从objectname.Id.中获取类似的值。

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

这是一个例子

你的数据模型类

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();
}
然后,这个
结果将返回Id为的数据。在这里
\u dbContext
是您创建的EntityFrameWork
SPContext


尝试此操作。

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

这是一个例子

你的数据模型类

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();
}
然后,这个
结果将返回Id为的数据。在这里
\u dbContext
是您创建的EntityFrameWork
SPContext

试试这个。

完成解决方案

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);
}
公共班级学生
{
公共int Id{get;set;}
公共字符串名称{get;set;}
}
公共异步任务创建([Bind(“Id,Name”)]Student)
{
if(ModelState.IsValid)
{
_上下文。添加(学生);
wait_context.SaveChangesAsync();
//这里是插入记录后的Id值
int StudentId=student.Id;
返回重定向到操作(名称(索引));
}
返回视图(学生);
}
希望您理解,并对您有所帮助。

完整解决方案

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);
}
公共班级学生
{
公共int Id{get;set;}
公共字符串名称{get;set;}
}
公共异步任务创建([Bind(“Id,Name”)]Student)
{
if(ModelState.IsValid)
{
_上下文。添加(学生);
wait_context.SaveChangesAsync();
//这里是插入记录后的Id值
int StudentId=student.Id;
返回重定向到操作(名称(索引));
}
返回视图(学生);
}

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

我在您的示例中没有看到实体Framworkz代码是!没有EF代码。请描述更多。@TheGeneral我应该添加什么?我在您的示例中没有看到实体Framworkz代码是的!没有EF代码。请描述更多。@TheGeneral我应该添加什么?我需要更多信息。我应该在代码中添加什么位置和内容。我想返回新插入的列的ID,并将其保存在
nwBran
中。您不需要在插入存储过程中选择@IDENTITY。只需将表的唯一列设为标识列(或在表中添加ID列并使其标识),然后在表中插入一行即可。例如:var cust=new Customer();context.Customers.Add(cust);context.SaveChanges();//生成客户字符串的Id nwBran=cust.Id;//现在您可以获得插入对象的Id(标识),我需要更多信息。我应该在代码中添加什么位置和内容。我想返回新插入的列的ID,并将其保存在
nwBran
中。您不需要在插入存储过程中选择@IDENTITY。只需将表的唯一列设为标识列(或在表中添加ID列并使其标识),然后在表中插入一行即可。例如:var cust=new Customer();context.Customers.Add(cust);context.SaveChanges();//生成客户字符串的Id nwBran=cust.Id;//现在您可以获得插入对象的Id(标识),我需要更多信息。我应该在代码中添加什么位置和内容。我想返回新插入列的ID并将其保存在
nwBran
中,请检查我在您的问题中的另一个答案。有一个实体框架的例子。我需要更多的信息。我应该在代码中添加什么位置和内容。我想返回新插入列的ID并将其保存在
nwBran
中,请检查我在您的问题中的另一个答案。有一个实体框架的例子。