Картографическая коллекция NHibernate без внешнего ключа - PullRequest
2 голосов
/ 09 июля 2010

У меня есть класс с именем WorkingDays, для этого класса требуется набор дат, которые являются датами выходных дней. В нашей базе данных есть таблица, которая содержит эти даты - я хочу, чтобы nhibernate получил все эти даты и заполнил коллекцию bankHolidays.

Однако уловка заключается в том, что у меня нет таблицы, которая представляет ссылку в базе данных, - на самом деле это не нужно, когда все рабочие дни будут иметь одинаковый список дат выходных.

Так, как я могу сопоставить это без добавления внешнего ключа? Я надеюсь, что код ниже может проиллюстрировать лучше:

public class WorkingDays : Interval
{
   public ICollection<DateTime> BankHolidays
   {
       get;
       private set;
   }
}

Ответы [ 3 ]

1 голос
/ 10 июля 2010

Если вам нужна коллекция только для чтения, вы можете попробовать следующее:

<property name="BankHolidays" type="DateTime[]" formula="(SELECT Date FROM BankHolidays)" update="false" insert="false" />
1 голос
/ 09 июля 2010

Есть ли причина, по которой вам нужно это как коллекцию самой сущности?Почему бы не иметь отдельный репозиторий / DAO, отвечающий за доступ к этой коллекции?Если бы данные были довольно статичными, вы, вероятно, могли бы получить немалую выгоду, используя кеширование второго уровня.

0 голосов
/ 22 июля 2011

У меня был похожий вопрос , и я подумал, что я могу помочь другим в будущем.

Я не думаю, что вы можете заставить NHibernate отображать детей, у которых нетнекоторый тип отношений с родителем в базе данных.В конце концов, это Объект Реляционный Mapper .

Решение состоит в том, чтобы подразумевать связь через базу данных.Создайте представление, которое связывает WorkingDays с BankHolidays.Затем добавьте HasMany (x => x.BankHolidays) в ваше отображение WorkingDays.

...