开发者

Entity Framework 1 - How to insert a record that involves Navigational Entities

I'm using SQL Server, Framework 3.5, C# My Product table is like id, name, created_by, group_id

created_by is a foreign key form users

group_id is foreign key form groups

            PRODUCT product        = new PRODUCT();

            product.name           = txtName.Text.Trim();
            product.USER           = new USER { user_id = Session["开发者_如何学运维UserID"] };
            product.GROUP         = new GROUP { group_id = 1 };

            _db.AttachTo("USERs", product.USER);
            _db.AttachTo("GROUPs", product.GROUP);
            _db.AddToLEAD_TYPE(product);
            _db.SaveChanges();

But I get error on savechanges

// An object with the same key already exists in the ObjectStateManager. The existing object is in the Unchanged state. An object can only be added to the ObjectStateManager again if it is in the added state.

How to fix this?


Here is how I solved my probelm

        PRODUCT product        = new PRODUCT();
        product.name           = txtName.Text.Trim();
        product.USERReference  = CreateEntityReference<USER>("MyEntities.USERs", "user_id", Session["UserID"] );
        product.GROUPReference = CreateEntityReference<GROUP>("MyEntities.GROUPs", "group_id", 1 );

        _db.AddToPRODUCTS(product);
        _db.SaveChanges();

And here is my CreateEntityReference function

        private EntityReference<T> CreateEntityReference<T>
            (string qualifiedEntitySetName, string keyName, object keyValue) where T : EntityObject
        {
            EntityReference<T> result = new EntityReference<T>();
            result.EntityKey = new System.Data.EntityKey(qualifiedEntitySetName, keyName, keyValue);
            return result;
        }

Hopefully this will save time of many of you.

0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜