Я думаю, что это вопрос неофита умеренно. Я использую NHibernate / FluentNHibernate около 6 месяцев или около того, и я думаю, что я достаточно хорошо понимаю основы. Теперь я немного подталкиваю. Я уверен, что это задокументировано, но я провел несколько часов в Google и не совсем понял.
У меня есть простой класс, назовите его Simple:
public class Simple
{ public string Name { get; set;}
public string Desc { get; set; }
public string Status { get; set;}
}
Состояние фактически ограничено одним из небольшого набора значений: «ACTIVE», «ON-HOLD» и «CLOSED». В схеме БД у меня есть простая таблица только для чтения с именем RetrofitStatus:
CREATE TABLE [dbo].[RetrofitStatus](
[Status] [nvarchar](10) NOT NULL,
[SortOrder] [smallint] NOT NULL,
CONSTRAINT [PK_RetrofitStatus] PRIMARY KEY CLUSTERED
(
[Status] ASC
)
И есть ограничение внешнего ключа для таблицы Simple, чтобы убедиться, что Status находится в RetrofitStatus.
Цель таблицы RetrofitStatus - включить столбец SortOrder, чтобы я мог (в SQL)
SELECT * from Simple s join RetrofitStatus r on r.Status=s.Status ORDER BY r.SortOrder
и сортируйте мои результаты в порядке отображения (например, сначала все записи ACTIVE, затем записи ON-HOLD, затем записи CLOSED, поскольку я сортирую по логическому порядку, а не по алфавиту или что-либо еще, что легко распознается).
Мой вопрос: как мне моделировать этот объект и отношения в FNH? Я могу добавить свойство SortOrder к своему простому определению и создать представление, которое представляет это, но что произойдет, когда я попытаюсь вставить новые простые объекты в таблицу? Очевидно, я не хочу пытаться вставить свойство SortOrder. Я думаю, что мне нужно каким-то образом использовать элемент NHib, но, опять же, я не понимаю, куда это должно идти, что происходит при вставке и как это сделать в Fluent?
Я собираюсь попробовать поэкспериментировать с методом проб и ошибок, но я подумал, что, возможно, кто-то, кто знает, что они делают (а я нет), может указать мне верное направление и сэкономить мне время. Спасибо за вашу помощь.