开发者

getting the ID of newly added recorded using linq to entities

Hi this is my first project using linq to entities. I've figured out how to create a new record I just need to get the ID that was assigned to it so I can use it as a FK in an extension table when I add the entries there. I'm allowing users to create request, the request can be for multiple pieces of equipment so I have a Request and RequestedEquipment table. Here is the code I'm using to create the request:

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

How can I get the ID of the request that was created so I can use it to Create the needed entries in the RequestedEquipment Table?


You should be able to pull the ID value from your new Request object after the call to SaveChanges(), so something like:

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

SaveChanges() should save your new record to the database, and if the ID column is set as an identity column in the DB, that auto-generated ID should be passed back into your object via the entity framework.

Also just in case here's a blog post on an issue where the ID field wasn't getting updated automatically: http://dotnethacker.wordpress.com/2010/12/24/entity-framework-savechanges-doesnt-get-the-generated-identity-key/


Ryan and Mikecito are both right. However, if you need a generic solution take a look at the following function:

public static T AddEntity<T>(T ent)
{
    Type t = typeof(T);

    try
    {
        using (Entities be = new Entities())
        {
            be.AddObject(t.Name, ent);
            be.SaveChanges();

            return ent;
        }
    }
    catch (Exception)
    {
        return default(T);
    }
}

This way you can create any entity you need and by returning the newly created entity you find its new id. HTH.


I believe the object you create will have the ID field populated once you save changes.

So after your SaveChanges() line, check the value of the ID field.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜