linq - 使用 linq toEntity 获取新添加记录的 ID

标签 linq linq-to-entities

嗨,这是我使用 linq toEntity 的第一个项目。我已经弄清楚如何创建新记录,我只需要获取分配给它的 ID,这样当我在扩展表中添加条目时,我就可以将它用作扩展表中的 FK。我允许用户创建请求,该请求可以针对多个设备,因此我有一个 Request 和 RequestedEquipment 表。这是我用来创建请求的代码:

public void addReq(ReqType reqType, Employee reqBy, Location loc, string comm)
        {
            int reqID;
            Request req = new Request();
            req.Comments = comm;
            req.Employee = reqBy;
            req.ReqType = reqType;
                req.RequestStatus = findReqStat(1);
            req.Location = loc;
            entities.AddToRequests(req);
            entities.SaveChanges();
        }

如何获取已创建的请求的 ID,以便我可以使用它在 RequestedEquipment 表中创建所需的条目?

最佳答案

在调用 SaveChanges() 后,您应该能够从新的 Request 对象中提取 ID 值,如下所示:

entities.SaveChanges();
reqID = req.ID;

SaveChanges() 应该将您的新记录保存到数据库,如果 ID 列设置为数据库中的标识列,则该自动生成的 ID 应通过 Entity Framework 传递回您的对象。

此外,为了以防万一,这里有一篇关于 ID 字段未自动更新问题的博客文章: http://dotnethacker.wordpress.com/2010/12/24/entity-framework-savechanges-doesnt-get-the-generated-identity-key/

关于linq - 使用 linq toEntity 获取新添加记录的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5688137/

相关文章:

c# - EF Core Lambda 表达式对象引用未设置为多个联接上的对象实例

asp.net-mvc - Entity Framework : LINQ Include() does not work after DB update, 为什么?

c# - 如何检查包含多个值的 CONTAINS

c# - Lambda 表达式 LINQ 等同于 SQL Exists Query on Same Table/Variable

c# - 获取错误 "Delegate ' System.Func<EntityType,int,bool> does not take 1 arguments"from Entity Framework LINQ query

c# - 比较linq中的日期

c# - Include方法的作用是什么

c# - 我使该方法返回什么类型?

c# - 如何比较两个 `List<MyObject1> with List<MyObject2>` ?

c# - 根据公共(public)属性合并列表项