获取使用linq记录的新添加的ID到实体

use*_*916 5 linq linq-to-entities

嗨这是我第一个使用linq实体的项目.我已经想出了如何创建一个新记录,我只需要获取分配给它的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();
        }
Run Code Online (Sandbox Code Playgroud)

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

小智 8

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

entities.SaveChanges();
reqID = req.ID;
Run Code Online (Sandbox Code Playgroud)

SaveChanges()应该将新记录保存到数据库中,如果ID列设置为DB中的标识列,则应通过实体框架将该自动生成的ID传递回对象.

另外,以下是关于ID字段未自动更新的问题的博客文章:http: //dotnethacker.wordpress.com/2010/12/24/entity-framework-savechanges-doesnt-get-the-生成的身份密钥/


Mik*_*ito 0

我相信保存更改后,您创建的对象将填充 ID 字段。

因此,在 SaveChanges() 行之后,检查 ID 字段的值。