实体框架1 -如何插入包含导航实体的记录

本文关键字:实体 包含 导航 记录 插入 框架 何插入 | 更新日期: 2023-09-27 18:03:49

我使用SQL Server, Framework 3.5, c#我的Product表是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中已经存在一个具有相同key的对象。现有对象处于Unchanged状态。对象只有处于已添加状态时,才能再次添加到ObjectStateManager中。

如何解决这个问题?

实体框架1 -如何插入包含导航实体的记录

我是这样解决这个问题的

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