Для связи один к одному возьмем объекты «Студент» и «Зачетная книжка» - один студент может иметь только одну зачетную книжку. Для начала создадим классы студента и зачетной книжки:
namespace Fluent.Domain
{
//Домен студента
public class Student
{
public virtual long Id { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual char Sex { get; set; }
public virtual int Year { get; set; }
//Ссылка на зачетную книжку
public virtual RecordBook RecordBook { get; set; }
}
}
namespace Fluent.Domain
{
//Домен зачетной книжки
public class RecordBook
{
public virtual long Id { get; set; }
public virtual string Number { get; set; }
//Ссылка на студента
public virtual Student Student { get; set; }
}
}
Теперь необходимо создать классы отображения (map-классы):
Как видно из примера, каждый класс отображения содержит конструкцию для указания имени таблицы в базе данных (Table), конструкцию для отображения ключевого поля на таблицу базы данных (Id), конструкции для отображения информационных полей на таблицу базы данных (Map), конструкции для связывания объектов. В данном примере, для того чтобы связать объекты «Студент» и «Зачетная книжка» связью один к одному в классе студента необходима ссылка на объект «Зачетная книжка»:
public virtual RecordBook RecordBook { get; set; }
В классе зачетной книжки для того, чтобы с объекта зачетной книжки можно было получить доступ к студенту, в классе зачетной книжки необходима ссылка на объект «Студент»:
public virtual Student Student { get; set; }
В классах отображения тоже должны быть соответствующие поля. Со стороны студента: