NHibernate达人进!

英雄不联盟2015 2010-09-06 01:19:46
最近我正在研究NHibernate但是,无论如何我也无法完成第一个数据表的映射。总是提示我
No persister for: Report.Model.TUser
现在介绍一些我的开发环境 Win7+Vs2008Sp1+NHibernate 2.1.2GA Required_Bins全部引用,代理用的也引用正确。
而且Mapping文件已经改成嵌入式资源了
代码:
Model:

using System;
using System.Collections;

namespace Report.Model
{
#region TUser

/// <summary>
/// TUser object for NHibernate mapped table 'T_User'.
/// </summary>
public class TUser
{
#region Member Variables

protected int _id;
protected string _nAME;

#endregion

#region Constructors

public TUser() { }

public TUser( string nAME )
{
this._nAME = nAME;
}

#endregion

#region Public Properties

public int Id
{
get {return _id;}
set {_id = value;}
}

public string NAME
{
get { return _nAME; }
set
{
if ( value != null && value.Length > 20)
throw new ArgumentOutOfRangeException("Invalid value for NAME", value, value.ToString());
_nAME = value;
}
}



#endregion
}
#endregion
}


Mapping :

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Report.Model" assembly="Report.Model" >
<class name="Report.Model.TUser,TUser" table="T_User" lazy="false">
<id name="Id" type="Int32" unsaved-value="null">
<column name="ID" length="4" sql-type="int" not-null="true" unique="true" index="PK_T_User"/>
<generator class="native" />
</id>
<property name="NAME" type="String">
<column name="NAME" length="20" sql-type="nvarchar" not-null="true"/>
</property>
</class>
</hibernate-mapping>

Web.Config片段

<!-- Add this element -->
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="dialect">NHibernate.Dialect.MsSql2000Dialect</property>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.connection_string">Server=.\DB2000;Database=AN_SteelReport;UID=sa;PWD=;</property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
<mapping assembly="Report.Model"/>
</session-factory>
</hibernate-configuration>

Using Code:

TUser User = new TUser();
User.NAME = "Edison";
ISession session = NHibernateHelper.GetCurrentSession();

ITransaction tx = session.BeginTransaction();

session.Save(User);
tx.Commit();

NHibernateHelper.CloseSession();

没办法发截图,只有这些代码了 如果不明白我下午回来再加代码。
跪求,解答!
...全文
140 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
风尘浪子 2010-09-06
  • 打赏
  • 举报
回复
[Quote]
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory> <property name="dialect">NHibernate.Dialect.MsSql2000Dialect</property> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> <property name="connection.connection_string">Server=.\DB2000;Database=AN_SteelReport;UID=sa;PWD=;</property> <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property> <mapping assembly="Report.Model"/> </session-factory> </hibernate-configuration>
[/Quote]
你应该先建立hibernate.cfg.xml文件,把这些初始化代码放在里面,而不是写在web.config里面。
lilin8905 2010-09-06
  • 打赏
  • 举报
回复
hulingfeng211 2010-09-06
  • 打赏
  • 举报
回复
路过,看看!!
bloodish 2010-09-06
  • 打赏
  • 举报
回复
Sorry,写错关键字了,,额
virtual
bloodish 2010-09-06
  • 打赏
  • 举报
回复
public vritual int Id
{
get {return _id;}
set {_id = value;}
}

public vritual string NAME
{
get { return _nAME; }
set
{
if ( value != null && value.Length > 20)
throw new ArgumentOutOfRangeException("Invalid value for NAME", value, value.ToString());
_nAME = value;
}
}

NHibernate中,实体类的属性必须是virtual的

如果你是用CodeSimith类似的代码生成软件生成,自己去修改一下它的脚本,加上virtual关键字
guanglin522 2010-09-06
  • 打赏
  • 举报
回复
膜拜大神啊
wuyq11 2010-09-06
  • 打赏
  • 举报
回复
检查hbm.xml文件
检查hibernate.cfg.xml是否配置mapping 如:<mapping assembly=””/>
检查.hbm.xml文件属性“生成操作”的值,从“内容”修改为“嵌入的资源”
  • 打赏
  • 举报
回复
世风日下人心不古啊
  • 打赏
  • 举报
回复
自己先顶一下!!

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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