none
ef框架使用视图中遇到的一个问题 RRS feed

  • 问题

  • 我这里遇到一个这样的问题,比如我把查一个视图然后赋值给datagridview控件的datasource属性,这个datagridview控件的第一列是一个checkbox的列,这样比如原先没有选中的状态,我把它的选中,这个时候视图的entitystate为modify这样子我调用savechanges()方法的时候会把下面这个错误,有没有什么好的解决办法没有啊
    代码如下:


                //入库数据列表
                this.InDataSource.DataSource = this.bllInOutDoc.SelectAllInOutDocView(enumBusinessType.R.ToString() ).OrderByDescending(p=>p.IODOC_NUMBER).ToList();
                this.dgvInboundList.DataSource = this.InDataSource;

    //按钮事件里面的代码如下:

     foreach (DataGridViewRow row in this.dgvInboundList.Rows)
                {
                    int index = row.Index;
                    object value = row.Cells[0].Value;
                    if (!HtRowIndex.ContainsKey(index) && value!=null && value.ToString() == "Y")
                    {
                        VIEW_DocumentInOut obj = (VIEW_DocumentInOut)row.DataBoundItem;//这里的entityState = modify,所以更新的时候会有问题,有没有解决方案啊
                        Guid did = obj.IODOC_ID;
                        BT_INOUTDOC temp = this.bllInOutDoc.Select(did);
                        if (temp == null) continue;
                        temp.IODOC_CONFIRMUSER_ID = GlobalVar.LogedUser.USER_ID;
                        temp.IODOC_CONFIRMDATE = DateTime.Now;
                        temp.IODOC_CONFIRMREMARK = "Y";
                        this.bllInOutDoc.UpdateForArchive(temp);
                        //updateList.Add(temp);
                    }
                }

    然后比如我勾选了控件上第一列的某几个checkbox,这样子通过跟踪发现这些行的entityState = modify,这样我在调用saveChanges()的时候,会报错,错误信息如下:

    修改出错,错误信息:无法更新 EntitySet“VIEW_DocumentInOut”,因为它有一个 DefiningQuery,而 <ModificationFunctionMapping> 元素中没有支持当前操作的 <UpdateFunction> 元素。


    crazyBasketball
    2010年6月20日 5:50

答案

  • 可能是因为没有定义了更新的方法或者表没有主键导致了这个错误
    本帖内容仅供参考,没有任何保证. This post is for reference only, without any warranty.
    • 已标记为答案 Mog Liang 2010年6月30日 6:07
    2010年6月29日 10:52
    版主