我正在使用Nhibernate 2.2版将类映射到项目中的表。以下是我的类文件和映射文件
public abstract class BasicUser
{
public virtual int RowID { get; set; }
public virtual string DisplayName { get; set; }
public BasicUser()
{
}
}
<class name="BasicUser" table="UserAccounts" >
<id column="RowID" type="Int32">
<generator class="native" />
</id>
<property name="DisplayName" type="String" length="25" />
<!-- More mapping members -->
</class>
现在我遇到的问题是,每当我保存一个对象时,它就会自动为对象生成RowID。但是当我稍后从数据库中查询对象时(使用IQuery中的一些其他属性),我得到RowID始终设置为0的对象。 你能不能告诉我如何使用当前的RowID来回溯一个对象。谢谢。
答案 0 :(得分:1)
您应该为Id设置名称属性值,如下所示:
<class name="BasicUser" table="UserAccounts" >
<id column="RowID" type="Int32" Name="RowID">
<generator class="native" />
</id>
<property name="DisplayName" type="String" length="25" />
<!-- More mapping members -->
</class>
答案 1 :(得分:0)
非常抱歉延迟的人,我离开了睡觉:) ..继承人我的代码
BasicUser user = null;
using (ISession session = sessionFactory.OpenSession())
{
IQuery query = session.CreateQuery("From BasicUser user where user.Email=?");
query.SetString(0, email);
query.SetMaxResults(1);
IList<BasicUser> results = query.List<BasicUser>();
if (results.Count > 0)
user = results[0];
}
return user;
此代码有效,我获取BasicUser对象的所有详细信息,并删除其行ID。