Таблицы, которые содержат внешний ключ, обычно представляют детали большего объекта.
И EmpDetails
, и EmpDocuments
представляют различный уровень детализации вашей великой сущности Emp
.
Поскольку у вас может быть много документов и много деталей для каждого экземпляра Emp
, ваши таблицы данных должны быть собраны в виде списка внутри вашего emp
класса.
public class emp {
public int Id { get; set; }
public string Name { get; set; }
public int DepartmentId { get; set; }
public IList<empDetail> Details {
get {
return _details;
}
}
private IList<empDetail> _details;
public IList<empDocument> Documents {
get {
return _documents;
}
}
private IList<empDocument> _documents;
}
Используя NHibernate , вы можете просто не заботиться о своей реляционной модели базы данных, и этот инструмент автоматически генерирует вашу реляционную схему базы данных, используя SchemaExportTool
из диаграммы классов через файлы сопоставления XML ( Перейдите по этой ссылке для обзора ).
Существует несколько плагинов для NHibernate, таких как Fluent NHibernate (FNH)
, Linq to NHibernate
.
.
Вот несколько полезных ссылок, которые помогут вам ознакомиться с ним:
- Справочная документация NHibernate
- Основное отображение O / R
- Конфигурация ISessionFactory
- Говоря об архитектуре: Архитектура NHibernate
- Отображение коллекций -> Очень полезно для отображения ваших двух коллекций
empDetail
и empDocument
в пределах вашего emp
класса сущностей.
- Хороший учебник
Несколько преимуществ использования NHibernate:
- Никогда не удосуживайся снова проектировать реляционную модель;
- Не беспокойтесь о базовом хранилище данных, NHibernate поддерживает несколько механизмов баз данных с помощью простого XML-файла конфигурации (нет необходимости перекомпилировать приложение для какой-либо из базовых баз данных);
- Увеличивайте свое развитие легко с 25% до 50% или более, как только вы овладеете NHibernate;
В противном случае есть также Microsoft Enterprise Library , которую я часто использую в сочетании с NHibernate или, в зависимости от проектов, я могу предпочесть использовать только EntLib с различными блоками приложений:
- Блок приложения доступа к данным ;
- Блок обработки исключений ;
- Блок приложения регистрации ;
- Блок приложения безопасности ;
- Блок приложения Unity ;
И я могу забыть некоторые другие ...