删除数据和更新对象

基本思路

获取一个对象;调用 ISession.Delete();同步 ISession

 public void DeleteNews(News news)
        {
            session.Delete(news);
            session.Flush();
        }
Code language: JavaScript (javascript)

newsDal.DeleteNews(new News() { ID = 3 });

直接通过new 一个对象 会报错

“NHibernate.NonUniqueObjectException”类型的未经处理的异常在 NHibernate.dll 中发生

其他信息: a different object with the same identifier value was already associated with the session

我们需要先查出来,然后再删除

var news = newsDal.GetByID(3);

newsDal.DeleteNews(news);

更新对象

基本思路

获取一个对象;改变它的一些属性;调用 ISession.Update();同步 ISession。

 public void UpdateNews(News news)
        {
            session.Update(news);
            session.Flush();
        }
Code language: JavaScript (javascript)
 var news = newsDal.GetByID(4);
            news.Title = "好好学习 天天向上";
            newsDal.UpdateNews(news);
Code language: JavaScript (javascript)

自动识别那些是修改的那些是新增的对象

public void SaveOrUpdate(News news)
        {
            session.SaveOrUpdate(news);
            session.Flush();
        }Code language: JavaScript (javascript)

然后我们创建两个对象 一个是new出来的 一个是查找出来的 那么调用同一个方法 我们的nhibernate会自动判断 是使用那个

 

 private void button2_Click(object sender, EventArgs e)
        {
            var newNews = new News() { AddTime = DateTime.Now, Content = "hahahhahahha", Status = false, Title = "我是新增的" };

            var news = newsDal.GetByID(4);
            news.Title = "1111好好学习 天天向上111111";

            newsDal.SaveOrUpdate(newNews);
            newsDal.SaveOrUpdate(news);
        }
Code language: JavaScript (javascript)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注