Linq To Entity 中删除出错的原因分析

 

           using (SysPortalEntities sys = new SysPortalEntities())
            {
                var query = sys.BS_RequestClassItem.Where(EntityExtension.Contains<BS_RequestClassItem, string>(c => c.sCreator, userID)).Where(r=>r.nRequestClassID==requestClassID);

                foreach (var item in query)
                {
                    sys.DeleteObject(item);
                }

                try
                {
                    if (sys.SaveChanges() > 0)
                        return true;
                    else
                        return false;

               }

               catch

              {

              }

 

在这段代码执行数据删除时,由Catch 捕捉到以下错误:

  无法更新 EntitySet“BS_RequestClassItem”,因为它有一个 DefiningQuery,而 <ModificationFunctionMapping> 元素中没有支持当前操作的 <DeleteFunction> 元素。

 

分析:

      在设定断点跟踪时,发现由于  "数据表" 中没有设定主键, Linq 在执行删除时,无法标识到具体要删除的行。所以无法删除。

 

解决方法:

     在表中设定主键。

posted @ 2010-10-21 14:20  jerry-Tom  阅读(679)  评论(0编辑  收藏  举报