首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

EntitySet调用add步骤去没有改变Untracked state

2013-01-08 
EntitySet调用add方法去没有改变Untracked state本帖最后由 XieeEvil 于 2012-04-08 17:00:39 编辑EntityS

EntitySet调用add方法去没有改变Untracked state
本帖最后由 XieeEvil 于 2012-04-08 17:00:39 编辑 EntitySet 调用add方法后没有将object state 从Untracked 修改为可被datacontext跟踪的状态,导致
EntitySet add一个新的Entity或修改里面的一个实体 调用submitchanges后发现数据库没有保存更改
下面试代码:

初始化:
           IEnumerable<T_XEStudent> students = context.GetTable<T_XEStudent>();
            string studentName = this.cmbStudentName.Text;
            CurrentSelectedStudent = students.SingleOrDefault(m => m.StudentName.Equals(studentName));
            currentPaper = CurrentSelectedStudent.T_XEPapers.SingleOrDefault();

        private void btnSavePingYue_Click(object sender, EventArgs e)
        {
            T_XEComment com=currentPaper.T_XEComments.SingleOrDefault(m => m.CommentTeacherName.Equals(teacher.TeacherName));
            //修改评语 数据库中友Comment记录 
            if (com!=null)
            {   
                com.ReceiveScoreSelectSubject = Convert.ToInt32(this.cmbReceiveScoreSelectSubject.Text);
                com.RecieveScoreComprehensiveSkill = Convert.ToInt32(this.cmbRecieveScoreComprehensiveSkill.Text);
                com.RecieveScoreReferenceDocument = Convert.ToInt32(this.cmbRecieveScoreReferenceDocument.Text);
                com.RecieveScoreWritingLevel = Convert.ToInt32(this.cmbRecieveScoreWritingLevel.Text);
                com.RecieveScoreStudingLevel = Convert.ToInt32(this.cmbRecieveScoreStudingLevel.Text);
                com.RecieveScoreFormat = Convert.ToInt32(this.cmbRecieveScoreFormat.Text);
                com.CommentContent = this.txtBoxComment.Text;
                if (teacherService.SavePingYue())           //修改记录后保存 调用public bool SaveChanges()方法
                {
                    MessageBox.Show("修改评阅内容成功");
                }
                else
                {


                    MessageBox.Show("修改评阅内容失败");
                }
                
            }
            //增加评语
            else
            {
                //跟对象必须做出修改 新添加的子对象才能被DataContext识别
                com = new T_XEComment();
                com.CommentTeacherName = teacher.TeacherName;
                com.ReceiveScoreSelectSubject = Convert.ToInt32(this.cmbReceiveScoreSelectSubject.Text);
                com.RecieveScoreComprehensiveSkill = Convert.ToInt32(this.cmbRecieveScoreComprehensiveSkill.Text);
                com.RecieveScoreReferenceDocument = Convert.ToInt32(this.cmbRecieveScoreReferenceDocument.Text);
                com.RecieveScoreWritingLevel = Convert.ToInt32(this.cmbRecieveScoreWritingLevel.Text);
                com.RecieveScoreStudingLevel = Convert.ToInt32(this.cmbRecieveScoreStudingLevel.Text);
                com.RecieveScoreFormat = Convert.ToInt32(this.cmbRecieveScoreFormat.Text);
                com.CommentContent = this.txtBoxComment.Text;
                
                currentPaper.T_XEComments.Add(com);//调用EntitySet的Add()方法

                if (teacherService.SavePingYue())   //调用public bool SaveChanges()方法
                {
                    MessageBox.Show("增加评阅内容成功");
                }
                else
                {
                    MessageBox.Show("增加评阅内容失败");
                }
            }
        }

        public bool SaveChanges()


        {
            try
            {
               ChangeSet set = context.GetChangeSet();
               IList<object> updateSet = set.Updates;
               IList<object> delelteSet= set.Deletes;
               IList<object> insertSet = set.Inserts;

                context.SubmitChanges();
            }
            catch (System.Exception ex)
            {
                return false;
            }
            return true;
        }
[解决办法]
SavePingYue()方法是定义在teacherService 类内的
你需要将你当前的context传递到SavePingYue方法内

热点排行