Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Связь многие ко многим
Для связи многие ко многим выберем объекты «Преподаватель» и «Предмет». Один преподаватель может вести много предметов и один предмет может вести несколько преподавателей. Создадим классы домены для преподавателя и для предмета:
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.
|