【发布时间】:2011-06-11 08:37:04
【问题描述】:
我的应用程序代码如下所示
表格
tblPerson
---------
PersonId (PK)
Name
tblAddress
----------
AddressId(PK)
Address
PersonAddress
-------------
PersonId (PK)
AddressId
实体类
PersonAddresstbl.cs
public class PersonAddressl
{
private int personid;
private int addressid;
private string name;
public virtual int PersonId
{
get { return personid; }
set { personid = value; }
}
public virtual int AddressId
{
get { return addressid; }
set { addressid = value; }
}
public virtual string Name
{
get { return name; }
set { name = value; }
}
}
xml 文件
PersonAddresstbl.hbn.xml
<class name="PersonAddressl">
<id name="id" column="PersonId">
<generator class="native"/>
</id>
<join table="tblPersonAddress"
optional="true">
<key column="PersonId"
unique="true"/>
<many-to-one name="Address"
column="AddressId"/>
</join>
</class>
<class name="tblAddress">
<id name="id" column="AddressId">
<generator class="native"/>
</id>
</class>
实现是
PersonAddresstbl tbl = new PersonAddresstbl();
Criteria crit = session.CreateCriteria(typeof(PersonAddresstbl));
IList lst = crit.List();
返回 0 条记录。
谁能告诉我我是走在正确的道路上还是哪里出错了?
谢谢, 帕万
【问题讨论】:
-
1) 您的映射为“id”,但您的班级具有“personid”属性。 2)为什么你的桌子上有'tbl'前缀?这不是 1990 年... 3) 你的“personaddress”为什么你的主键不是两列?这是一个多对多。
-
@Phil - re (2),没必要批评风格。
-
@j0k - 当然是 :) 帮助人们改善他们的造型。一次批评 1 次。
-
@Phill ;) 也伤害了我的眼睛,但不管对他们有用。
标签: c# nhibernate join