NHibernate问题

laiwei 2005-11-03 06:09:48
最近正在学习NHibernate,写第一人程序就出了问题。
//Examinee.cs
namespace GraduateStudentRecruit
{
public class Examinee
{
private string examineeId;
public string Examinee_Id
{
get
{
return examineeId;
}
}

public Examinee()
{}
public void Input_SignUp_Info()
{

}

public void Input_Major_Info()
{

}

public void Input_Personal_Info()
{

}

public void Input_Famili_Info()
{

}

public void Input_WorkGroup_Info()
{

}

public void Input_Degree_Info()
{

}

public void Input_Other_Info()
{

}

public void Input_Self_Study_Info()
{

}
}
}

//Examinee.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
<class name="GraduateStudentRecruit.Examinee, GraduateStudentRecruit" table="Examinee">
<!-- proxy="NHibernate.Examples.Blogger.Blog, NHibernate.Examples" -->
<id name="examineeId" column="ExamineeId" type="String(20)" unsaved-value="0">
<generator class="uuid.hex" />
</id>
</class>
</hibernate-mapping>

最后使用Examinee类时出错:
“/GraduateStudentRecruit”应用程序中的服务器错误。
--------------------------------------------------------------------------------

Unknown entity class: GraduateStudentRecruit.Examinee
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: NHibernate.MappingException: Unknown entity class: GraduateStudentRecruit.Examinee

源错误:


行 22: Examinee examinee=new Examinee();
行 23:
行 24: session.Save(examinee);
行 25: transaction.Commit();
行 26: session.Close();


源文件: d:\application\graduatestudentrecruit\signup.aspx.cs 行: 24

谁知道是什么原因啊?
...全文
165 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
laiwei 2005-11-05
  • 打赏
  • 举报
回复
已经加了,不行。现在又出新问题了:
Configuration cfg=new Configuration();
cfg.AddAssembly("GraduateStudentRecruit");
cfg.AddXmlFile(Server.MapPath("Examinee.hbm.xml"));

ISessionFactory factory=cfg.BuildSessionFactory();
ISession session=factory.OpenSession();
ITransaction transaction=session.BeginTransaction();

Examinee examinee=new Examinee();

session.Save(examinee);
transaction.Commit();
session.Close();

将截断字符串或二进制数据。语句已终止。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: 将截断字符串或二进制数据。语句已终止。

源错误:


行 25:
行 26: session.Save(examinee);
行 27: transaction.Commit();
行 28: session.Close();
行 29: }


源文件: d:\application\graduatestudentrecruit\signup.aspx.cs 行: 27
laiwei 2005-11-05
  • 打赏
  • 举报
回复
问题解决了,SQL Server不存在问题是由于本机的SQL Server 2000配置不对,截断字符是因为用uuid.hex方法生成的ID是32位的,错把它当成16位了。
结贴。
ld_thinking 2005-11-04
  • 打赏
  • 举报
回复
1. *.hbm.xml 设为 ’嵌入资源‘

2. config.AddAssembly(程序集名);

3. web.config +

<configSections>

<section name="nhibernate" type="System.Configuration.NameValueSectionHandler,System,Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />

</configSections>

<nhibernate>

<add key="hibernate.show_sql" value="true" />
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
<add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2000Dialect" />
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver" />
<add key="hibernate.connection.connection_string" value="data source=L2; database=Transport;User id =sa;"/>

</nhibernate>


应该就这些了
laiwei 2005-11-04
  • 打赏
  • 举报
回复
看了思归老大的提示,加上
cfg.AddXmlFile(Server.MapPath("Examinee.hbm.xml"));
后可以了,同时发现hbm中的Id或property应为类的property名,而不能是成员变量名。刚从C++中转过来,不太习惯啊。
但是老问题解决了,又出现了新问题:
SQL Server 不存在或访问被拒绝。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: SQL Server 不存在或访问被拒绝。

源错误:


行 20: ISessionFactory factory=cfg.BuildSessionFactory();
行 21: ISession session=factory.OpenSession();
行 22: ITransaction transaction=session.BeginTransaction();
行 23:
行 24: Examinee examinee=new Examinee();


源文件: d:\application\graduatestudentrecruit\signup.aspx.cs 行: 22


谁能给点提示吗?另外给分,这50分给思归老大了。
saucer 2005-11-04
  • 打赏
  • 举报
回复
看上去是NHibernate不知道你的对象,你没装载Examinee.hbm.xml,在你程序里,有
这样的语句么?

Configuration cfg = new Configuration();
cfg.AddAssembly("GraduateStudentRecruit");

或者

cfg.AddXmlFile(Server.MapPath("Examinee.hbm.xml"));

laiwei 2005-11-03
  • 打赏
  • 举报
回复
我是仿照例子做的,只不过自己建了个Examinee类而已,郁闷
jiezhi 2005-11-03
  • 打赏
  • 举报
回复
你如果是按照例子做的,应该不会出错的.

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧