Для связи один ко многим возьмем объекты «Группа» и «Студент». В одной группе может быть много студентов. Один студент может состоять только в одной группе.
Создадим классы домены для группы и студента:
namespace Fluent.Domain
{
//Домен группы
public class Group
{
private IList<Student> studentList = new List<Student>();
public virtual long Id { get; set; }
public virtual string GroupName { get; set; }
public virtual string CuratorName { get; set; }
public virtual string HeadmanName { get; set; }
public virtual IList<Student> StudentList
{
get { return studentList; }
set { studentList = value; }
}
}
}
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 Group Group { get; set; }
}
}
Обратите внимание, что со стороны группы содержится список для хранения студентов.
Создадим классы отображения для группы и студента:
using System;
using System.Collections.Generic;
using FluentNHibernate.Mapping;
using Fluent.Domain;
namespace Fluent.Mappings
{
//Класс отображения группы
public class GroupMap:ClassMap<Group>
{
public GroupMap()
{
Table("Groups");
Id(x => x.Id).GeneratedBy.Native();
Map(x => x.GroupName);
Map(x => x.CuratorName);
Map(x => x.HeadmanName);
//Связь один ко многим
HasMany(x => x.StudentList)
.KeyColumns.Add("GroupId")