Как реализовать пользовательские операторы SQL для свойства объекта в NHibernate - PullRequest
0 голосов
/ 15 февраля 2011

В приложении у меня есть набор сопоставлений NHibernate класса сущностей с двумя общими свойствами: {GUID Id, string Tag} (реализован через абстрактный базовый класс).

В БД есть таблицы для каждой сущностис общими столбцами:

dbo.[EntityName] { uniqueidentifier Id,  ... etc. }

Также есть таблица, в которой хранится информация о некотором глобальном теге для каждой сущности:

dbo.EntityTag { uniqueidentifier Id,  nvarchar Tag }

Эта таблица строго необходима, и ее обязательно нужно иметь вDb.

Как реализовать собственную логику SQL для обновления, выбора и вставки значений в свойство Tag?

Например, в FluentNhibernate Было бы полезно иметь что-то вроде

Map(x => x.Tag)
    .Insert("INSERT dbo.EntityTag VALUES({Id},{Tag})")
    .Update("UPDATE dbo.EntityTag SET Tag={Tag} WHERE Id = {ID}")
    .SELECT("...")
    .Delete("... etc")

1 Ответ

0 голосов
/ 15 февраля 2011

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

Однако в этом случае, кажется, проще использовать отображение <join>.

...