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对象。 大家帮我看看,谢谢!
但是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=?]
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对象。
大家帮我看看,谢谢!
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=?]
session.Save(upAuthor, id_int);
既然是修改应该用Update,或SaveOrUpdate