2010-12-02 7 views
0

С определением таблицы:FluentNhibernate Регистрация Класс

Employee 
    EmployeeId Primary Key 
    LastName 
    FirstName 

EmployeeAddress 
    EmployeeAddressId  
    EmployeeId 
    Address 
    City 

И класс определение

public class Employee 
{ 
    public int EmployeeId {get; set;} 
    public string LastName {get; set;} 
    public string FirstName {get; set;} 

    public EmployeeAddress EmployeeAddress {get; set;} 
} 

Что отображение типа следует использовать для заполнения Employee.EmployeeAddress. Моя первая попытка была

Reference(x=>x.EmployeeAddress).Column("EmployeeId") 

, который генерирует присоединиться в качестве

Employee.EmployeeId = EmployeeAddress.EmployeeAddressId 

Могу ли я использовать Присоединяйтесь, чтобы сделать это? Что-то вроде

Join("EmployeeAddress", join => join.Map(x => x.EmployeeAddress). 

Это вызывает ошибку при вызове configure. Кажется, я могу использовать Join только для отдельных свойств, а не для класса. Я могу заставить Join работать, если я добавлю свойства класса Employee для Address and City, а затем сопоставьте их, но я хочу отобразить его как класс, а не каждое отдельное свойство.

ответ

0

Я не знаю, свободный синтаксис (для one-to-one это HasOne и many-to-one это References), но это результирующий XML:

<class name="Employee"> 
    <id name="EmployeeId"> 
    <generator class="..." /> 
    </id> 
    <property name="FirstName" /> 
    ... 
    <one-to-one name="EmployeeAddress" cascade="all" property-ref="Employee" /> 
</class> 
<class name="EmployeeAddress"> 
    <id name="EmployeeAddressId"> 
    <generator class="..." /> 
    </id> 
    <property name="Address" /> 
    ... 
    <many-to-one name="Employee" column="EmployeeId" unique="true" cascade="all" /> 
</class> 
Смежные вопросы