也就是说作为查询条件的id值根本没有传给load(object ,int id)方法,但id确实被赋值了。可以save,能否说明配置文件和实体类没问题?

解决方案 »

  1.   

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using NHibernate;
    using NHibernate.Cfg;
    using System.Reflection;
    using EntityClasses;
    public partial class updateTest : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {    }
        protected void Button1_Click(object sender, EventArgs e)
        {
            string id_string = idText.Text;
            int id_int = Int32.Parse(id_string);
            ISession session = NDb.getSession();
            ITransaction trans = session.BeginTransaction();
            Author upAuthor = (Author)session.Load(typeof(Author), id_int);
           
            try
            {
                if (upAuthor != null)
                {
                    Response.Write(upAuthor.Id);
                    upAuthor.AuthorName = newNameTextbox.Text;
                    session.Save(upAuthor, id_int);
                    trans.Commit();
                }        }
            catch (Exception ex)
            {
                trans.Rollback();
                Response.Write(ex.Message);
            }
            finally
            {
                session.Close();
            }    }
    }
    这是我写的一个测试类
    NDb我写的一个类用来封装数据库操作的类(初学,可能这是多此一举)。运行后,提示错误出现在upAuthor.AuthorName = newNameTextbox.Text;查看详细错误是:
    could not load an entity: [EntityClasses.Author#1][SQL: SELECT author0_.id as id1_0_, author0_.AuthorName as AuthorName1_0_, author0_.PenName as PenName1_0_, author0_.Sex as Sex1_0_, author0_.Phone as Phone1_0_, author0_.Email as Email1_0_, author0_.QQ as QQ1_0_, author0_.MSN as MSN1_0_, author0_.Address as Address1_0_, author0_.BankName as BankName1_0_, author0_.BankCardID as BankCardID1_0_, author0_.BankCardUserName as BankCar12_1_0_, author0_.IsExpert as IsExpert1_0_, author0_.Field as Field1_0_, author0_.Introduction as Introdu15_1_0_, author0_.AddPerson as AddPerson1_0_, author0_.AddPersonChannel as AddPers17_1_0_, author0_.AddTime as AddTime1_0_ FROM T_Authors author0_ WHERE author0_.id=?] 
    注意最后一行的_ WHERE author0_.id=?] 
    但是我却可以save对象。
    大家帮我看看,谢谢!
      

  2.   

    但是id_int确实传给它了,我把异常打印而不抛出,在页面上显示如下,第一个字符就是我传给它的id_int.
    1could not load an entity: [EntityClasses.Author#1][SQL: SELECT author0_.id as id1_0_, author0_.AuthorName as AuthorName1_0_, author0_.PenName as PenName1_0_, author0_.Sex as Sex1_0_, author0_.Phone as Phone1_0_, author0_.Email as Email1_0_, author0_.QQ as QQ1_0_, author0_.MSN as MSN1_0_, author0_.Address as Address1_0_, author0_.BankName as BankName1_0_, author0_.BankCardID as BankCardID1_0_, author0_.BankCardUserName as BankCar12_1_0_, author0_.IsExpert as IsExpert1_0_, author0_.Field as Field1_0_, author0_.Introduction as Introdu15_1_0_, author0_.AddPerson as AddPerson1_0_, author0_.AddPersonChannel as AddPers17_1_0_, author0_.AddTime as AddTime1_0_ FROM T_Authors author0_ WHERE author0_.id=?]
      

  3.   

    还是看不出来不好意思,
    session.Save(upAuthor, id_int);
    既然是修改应该用Update,或SaveOrUpdate
      

  4.   

    郁闷就郁闷在这儿,save可以,load就不可以了。