Можете ли вы динамически заполнить значение db при фиксации в nhibernate / fluent nhibernate? - PullRequest
0 голосов
/ 14 февраля 2011

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

Если у вас есть группа с одинаковыми идентификаторами, тогдавсе эти встречи считаются повторяющимися встречами.

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

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

Пример

PK: 1, Title: Test1,  Repeating Id: 1
PK: 2, Title: Test2,  Repeating Id: 2
PK: 3, Title: Test2,  Repeating Id: 2
PK: 4, Title: Test2,  Repeating Id: 2
PK: 5, Title: Test3,  Repeating Id: 5

Таким образом, первая и последняя строки не имеют других строк, которые повторяются с ним.

Строки с 2 по 4 повторяются друг с другом.

Теперь в моем коде я генерирую все повторяющиеся строки перед вставкой.Так как nhibernate делает пакетные вставки, я делаю все мои вставки одновременно.Поэтому в настоящее время я не знаю, каким будет PK для какой-либо из строк.

Мне интересно, могу ли я как-то сказать, чтобы он взял первый элемент, который должен быть вставлен, нашел его PK и применил его?для всех следующих элементов repeatableId столбец?

В настоящее время я могу думать только об одном способе сделать это: вставить первый элемент и затем вернуть PK, а затем пакетно вставить все остальные элементы после с помощьюзаполненный повторяющийся идентификатор.

1 Ответ

1 голос
/ 14 февраля 2011

Я не уверен, как вы сохраните первый элемент повторяющейся группы ... но NH-пакеты сохраняют, а не присвоения идентификаторов, так что вы можете просто сделать:

var repeatingId = session.Save(firstAppointmentOfTheGroup)
foreach (var appointment in repeating)
{
    appointment.RepeatingId = repeatingId;
    session.Save(appointment);
}

Тем не менее, яне понимаю, почему вы реплицируете модель, которую jquery использует в вашей модели / БД.

Вместо этого вам следует использовать нормализованную модель (с RepeatingAppointment, имеющей коллекцию назначений) и проецировать ее при ее использовании.

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