Раньше я использовал L2S и смотрю на использование NHib вместе с Sharp Architecture для проекта. Я начал создавать прототипы и столкнулся с первой проблемой, о которой я не знаю, как искать в Google.
Учитывая POCO с некоторыми простыми свойствами и одним ссылочным свойством (Category - класс, не показанный здесь):
public class Post
{
public Post()
{
this.DateCreated = DateTime.Now;
}
public virtual string Title {get;set;}
public virtual DateCreated {get;set;}
public virtual Category {get;set;}
}
Это удобно, если я хочу создать сводку сообщений в табличном формате - если мне нужен столбец с именем «Категория» и я хочу показать название категории, я могу просто использовать Post.Category.Title.
Однако пользователь создает новый пост (он выбирает категорию из выпадающего списка или аналогичную). Они нажимают кнопку «Отправить», и я создаю объект Post. Однако прежде чем я смогу сохранить новое сообщение, мне нужно получить экземпляр категории (по идентификатору), чтобы присвоить свойству категории?
Как получить лучшее из обоих миров? Если я обновлю Post POCO, сделав Category int, я упросту создание новых экземпляров. Но сложнее для некоторого кода рендеринга, который теперь должен будет разрешить имя категории с помощью идентификатора?
Я чувствую, что мне здесь не хватает какой-то базовой концепции?
Я знаю, что с помощью Linq to Sql была дана схема, в которой таблица Post содержала целочисленный ключевой столбец с именем CategoryId, который генерировал бы меня как базовый столбец таблицы (CategoryId), так и EntitySet, который содержал строку внешнего ключа.
Как добиться подобного в NHibernate? Как это вообще управляется?
Спасибо