C# – Cannot add an entity with a key that is already in use (LINQ)


I get this error Cannot add an entity with a key that is already in use. when I run the code below.

enter image description here

What am i missing?

    private void CopyAllPageObjects(int fromPageID, int toPageID)
        CMSDataContext _db = new CMSDataContext();

        // Copy page objects
        var originalPageObjects = (from x in _db.CMSPageObjects
                                   where x.PageID == fromPageID
                                   select x);

        List<CMSPageObject> newPageObjects = new List<CMSPageObject>();
        foreach (CMSPageObject po in originalPageObjects)
            CMSPageObject newPageObject = new CMSPageObject();
            newPageObject.PageID = toPageID;
            newPageObject.CMSObjectID = po.CMSObjectID;
            newPageObject.Name = po.Name;
            newPageObject.Sorting = po.Sorting;

            // Copy page object attribute values
            var originalPoavs = (from x in _db.CMSPageObjectAttributeValues
                                 where x.CMSPageObjectID == po.ID
                                 select x);

            List<CMSPageObjectAttributeValue> newPoavs = new List<CMSPageObjectAttributeValue>();
            foreach (CMSPageObjectAttributeValue poav in originalPoavs)
                CMSPageObjectAttributeValue newPoav = new CMSPageObjectAttributeValue();
                newPoav.CMSAttributeID = poav.CMSAttributeID;
                newPoav.CMSPageObjectID = newPageObject.ID;
                newPoav.LCID = poav.LCID;
                newPoav.Value = poav.Value;


Best Solution

I was getting this error and it was because I had forgotten to set the Primary Key field in the database to "Identity Specification" (auto-increment). But that is just a guess