Прежде всего стоит упомянуть, что это FluentNhibernate , проект, который позволяет сохранять конфигурацию nhibernate в коде, используя пример, который вы использовали выше. На сайте довольно много документации.
Тем не менее, я дам вам несколько быстрых указателей, чтобы вы начали:
В ClassMapping есть метод Id, но я не знаю, какие возможные параметры он может принимать или что делает класс карты.
Метод Id принимает Expression<Func<T, object>>
, что позволяет коду под ним получить дерево выражений, которое представляет ваше поле id. В простом случае, который у вас есть, он возьмет дерево выражений и сгенерирует отображение идентификаторов, как это (если вы делали это, используя конфигурацию xml. Это также предположение и может быть неверным):
<id name="Id"><generator class="native" /></id>
Вы также можете использовать составные идентификаторы, например:
CompositeId()
.KeyProperty(t => t.Cat)
.KeyProperty(t => t.Color)
.KeyProperty(t => t.Name);
Более того, что делает x => x.ID? Из того, что я понимаю, следует сказать, что ссылка на x относится к x.id, но x используется повсеместно!?!
Я рекомендую прочитать деревья выражений, чтобы лучше понять, что они могут делать, чтобы вы могли увидеть, как лямбда-выражения можно использовать для получения информации о вашем графе объектов. x
- это просто заполнитель для объекта, который ожидает лямбда, который набирается универсальным параметром, переданным в ClassMap<T>
. Таким образом, x
- это T
, в вашем случае Customer
, который может быть проверен синтаксическим анализатором дерева выражений.
Надеюсь, это поможет!