zoukankan      html  css  js  c++  java
  • EF 中不同会话上下文的对象,不能互设为对方的导航属性值

    比方有会话CtxA中的A对象以及CxtB中的B对象,

    new 一个A对象,设置A.B=B,那么当将A添加到CtxA中时(代码:CtxA.A.AddObject(A))如果CtxA中不包括B对象那么将报错误:

    只有在 EntityKey 属性的当前值为 null 时才能设置该属性。

    如果CtxA中存在B对象那么将报错误:

    ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象

    解决办法:

    View Code
            private void tbtnAddNewItem_Click(object sender, EventArgs e)
            {
                var item = bindingSource1.Current as KB_BOMTable;
                if (item != null && treeView1.SelectedNode != null)
                {
                    //bGroup来自DBCtx以外的会话
                    var bGroup = treeView1.SelectedNode.Tag as KB_BOMGroup;
    
                    if (bGroup != null)
                    {
                        item.KB_BOMGroup = DBCtx.GetObjectByKey(bGroup.EntityKey) as KB_BOMGroup;
                       // item.GroupId = bGroup.GroupId; //只设置值属性,导航属性在改对象Attach到会话时自动加载
    
                    }
    
    
                }
            }

     另外注意设置GroupId=2 后,如果该datagridview列没显示--指有很多列该列需要拉动滚动条才可见,
     则不执行数据库查询加载编号是2的MGroup,而是当datagridview对应的物料组显示时才会触发(滚动条拉过去)

     

  • 相关阅读:
    jqGrid基本使用
    模块熟悉
    正则表达式-精髓
    登录+购物车+信息保存
    输入打开文件
    python打印目录下的文件名
    进度条
    模块导入
    正则表达式
    函数笔记
  • 原文地址:https://www.cnblogs.com/wdfrog/p/2554429.html
Copyright © 2011-2022 走看看