如何使用 NHibernate Mapping.ByCode 联接非主键字段上的表
本文关键字:字段 NHibernate 何使用 Mapping ByCode | 更新日期: 2023-09-27 17:57:13
我有一个员工表:
Employee
{
Name
EmployeeId -pk
PositionId -fk
}
位置 ID 映射到位置表:
Position
{
PositionId -pk
ReportsToId
PositionName
PositionDescription
}
"报告到 ID"字段是该职位经理的职位 ID。
我想选择一名员工,他们的职位和他们的经理详细信息。
如何使用NHibernate的Mapping.ByCode完成此操作。
"报告到 ID"字段不是关键字段。从我在网上读到的内容来看,这似乎影响了映射......
在这种情况下,映射将按 5.1.10 进行。 多对一,具有称为property-ref
的功能:
<many-to-one
...
property-ref="PropertyNameFromAssociatedClass" (7)
(7)
property-ref
:(可选)连接到此外键的关联类的属性的名称。如果未指定,则使用关联类的主键。
因此,Position 类应具有 ID 和属性ReportsToId
public virtual int ID { get; set; }
public virtual int ReportsToId { get; set; }
员工 C# 类将具有以下属性:
public virtual Position ManagerPosition { get; set; }
员工财产ManagerPosition
的映射将是(参见:Adam Bar,按代码映射 - ManyToOne)
ManyToOne(x => x.ManagerPosition , m =>
{
...
m.Column("PositionId") // column in the Employee table
m.PropertyRef(propertyReferencedName) // the Property/column in the Position table