簡體   English   中英

實體框架1-如何插入涉及導航實體的記錄

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

我正在使用SQL Server,Framework 3.5,C#,我的產品表就像id,name,created_by,group_id

created_by是外鍵表單的用戶

group_id是外鍵表單組

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

但是我在savechanges上出錯

// ObjectStateManager中已經存在具有相同鍵的對象。 現有對象處於“未更改”狀態。 如果對象處於添加狀態,則只能將其再次添加到ObjectStateManager。

如何解決這個問題?

這是我解決我的問題的方法

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

這是我的CreateEntityReference函數

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

希望這可以節省你們許多人的時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM