.


:




:

































 

 

 

 


Fluent NHibernate




Fluent NHibernate , : HasOne, HasMany, HasManyToMany.

.

- . :

 

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-):

 

namespace Fluent.Mappings

{

//

public class RecordBookMap: ClassMap<RecordBook>

{

public RecordBookMap()

{

//

Table("RecordBooks");

//

Id(x => x.Id).GeneratedBy.Native();

//

Map(x => x.Number);

//

References(x => x.Student).Column("StudentId").Cascade.All();

}

}

}

 

namespace Fluent.Mappings

{

//

public class StudentMap: ClassMap<Student>

{

public StudentMap()

{

//

Table("Students");

Id(x => x.Id).GeneratedBy.Native();

Map(x => x.FirstName);

Map(x => x.LastName);

Map(x => x.Sex);

Map(x => x.Year);

//

HasOne(x => x.RecordBook).ForeignKey("StudentId").Cascade.All();

}

}

}

 

, (Table), (Id), (Map), . , :

 

public virtual RecordBook RecordBook { get; set; }

 

, , :

 

public virtual Student Student { get; set; }

 

. :

 

HasOne(x => x.RecordBook).ForeignKey("StudentId").Cascade.All();

 

:

 

References(x => x.Student).Column("StudentId").Cascade.All();

 

, 4.1 4.2.

4.1

4.2

.

. . .

:

 

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")

Inverse()

Cascade.All();

}

 

}

}

 

namespace Fluent.Mappings

{

//

public class StudentMap: ClassMap<Student>

{

public StudentMap()

{

Table("Students");

Id(x => x.Id).GeneratedBy.Native();

Map(x => x.FirstName);

Map(x => x.LastName);

Map(x => x.Sex);

Map(x => x.Year);

//

References(x => x.Group).Column("GroupId").Cascade.All();

}

}

}

 

, :

 

HasMany(x => x.StudentList)

.KeyColumns.Add("GroupId")

Inverse()

Cascade.All();

, :

References(x => x.Group).Column("GroupId").Cascade.All();

, 4.1 4.2.

4.3

4.4

. .

:

 

namespace Fluent.Domain

{

//

public class Subject

{

private IList<Teacher> teacherList = new List<Teacher>();

 

public virtual long Id { get; set; }

 

public virtual string SubjectName { get; set; }

 

public virtual int HoursNumber { get; set; }

 

public virtual IList<Teacher> TeacherList

{

get { return teacherList; }

set { teacherList = value; }

}

}

}

 

namespace Fluent.Domain

{

//

public class Teacher

{

private IList<Subject> subjectList = new List<Subject>();

 

public virtual long Id { get; set; }

 

public virtual string FirstName { get; set; }

 

public virtual string LastName { get; set; }

 

public virtual IList<Subject> SubjectList

{

get { return subjectList; }

set { subjectList = value; }

}

}

}

 

, , .

:

 

namespace Fluent.Mappings

{

//

public class SubjectMap:ClassMap<Subject>

{

public SubjectMap()

{

Table("Subjects");

Id(x => x.Id).GeneratedBy.Native();

Map(x => x.SubjectName);

Map(x => x.HoursNumber);

//

HasManyToMany(x => x.TeacherList)

.Table("TeacherSubject")

.ParentKeyColumn("SubjectId")

.ChildKeyColumn("TeacherId");

}

}

}

 

namespace Fluent.Mappings

{

//

public class TeacherMap:ClassMap<Teacher>

{

public TeacherMap()

{

Table("Teachers");

Id(x => x.Id).GeneratedBy.Native();

Map(x => x.FirstName);

Map(x => x.LastName);

//

HasManyToMany(x => x.SubjectList)

.Table("TeacherSubject")

.ParentKeyColumn("TeacherId")

.ChildKeyColumn("SubjectId");

}

}

}

 

, HasManyToMany

, , 4.5, 4.6 4.7.

4.5

4.6

4.7

, NHibernate in Action NHibernate Cookbook.





:


: 2016-11-24; !; : 814 |


:

:

.
==> ...

1700 - | 1648 -


© 2015-2024 lektsii.org - -

: 0.05 .