Нет такой вещи, как определение свойства.
Вы можете объявить свойства только потому, что они являются контейнерами данных, зарезервированных в памяти при инициализации.
С другой стороны, функция может быть объявлена (типы, имя, параметры) без определения (тело функции отсутствует) и, таким образом, может быть сделана абстрактной.
«Абстрактный» указывает только на то, что что-то было объявлено, но не определено, и поэтому перед его использованием необходимо определить это, или оно станет бесполезным.
I don't know if it is possible with fluent, but in xml you use the join element:
simplified:
<class name="Employee" table="Customers" >
<id name="CustomerID" .../>
<property name="CustomerName"/>
<join table="Employees">
<key column="EmployeeCustID" />
<property name="EmployeeLogin" />
</join>
</class>
See this post by Ayende
Является ли EmployeeCustID уникальным? Если нет, то это никогда не сработает, поскольку вы затем пытаетесь втиснуть два разных типа сущностей в 1. Кроме того, как вы хотите сохранить экземпляр в своей структуре? -> CustomerID не известен, поэтому вы не можете сохранить такой объект.
ИМХО, лучше просто сохранить Customer как объект, связанный с Employee, поскольку (я предполагаю) EmployeeCustID используется для связывания объекта Customer с объектом Employee, если сотрудник также является клиентом, что означает, что «клиент» просто роль сотрудника и, следовательно, необязательная и изменяемая и, следовательно, должна быть отдельной единицей.
Я не пробовал этого, так как Fluent NHibernate перешел на 1.0, поэтому мой синтаксис может быть неправильным. Я почти уверен, что это сработает, только если Customer.CustomerId
является внешним ключом для Employee
.
public class EmployeeMap : ClassMap<Employee>
{
public EmployeeMap()
{
Id(x => x.EmployeeId);
Map(x => x.EmployeeLogin);
Table("Customer", m =>
{
m.Map(x => x.EmployeeName, "CustomerName");
});
}
}