如何在Entity框架中获取没有saveChanges的插入实体的Id?

这个问题在这里已经有了答案:

  • 实体框架 - 在'SaveChanges'之前检索事务处理3个答案

  • //MyClass has Id as property, this is set by the DB server
    var myObject = new MyClass { NotIdProp = someVal; }
    
    int idAfterInsert; //or string if using GUID for Id
    
    //transaction and then dispose DB context
    using (var db = new MyContext())
    {
        //add the entity object
        db.MyTable.Add(myObject);
    
       //now myObject will have its Id set by the DB server
       idAfterInsert = myObject.Id;
    
      //that's it if you don't want to Save Changes
    
    }
    

    然而,如果你的对象应该挂起,而不是在这个阶段保存,只是添加另一个SQL列,如提交或批准,并使它bit值(在C#中的布尔值),我没有看到这可能是有用的模式。

    然后当读取记录时,不要通过在bool列上过滤来获取您不想要的记录。


    如果使用序列生成键值而不是IDENTITY列,则可以在插入数据库之前获取键值。

    EF Core支持这种原生序列,您可以在EF6中使用一些自定义SQL来完成此操作。

    链接地址: http://www.djcxy.com/p/33553.html

    上一篇: How can I get Id of inserted entity without saveChanges in Entity framework?

    下一篇: How can I get Id of inserted entity in Entity framework when using defaultValue?