Как вставить строку таблицы с помощью FK, ссылающегося на эквивалентную таблицу базы данных enum в Fluent Nhibernate? - PullRequest
0 голосов
/ 09 марта 2012

Я надеюсь, что вы можете помочь с моим сценарием. У меня есть две таблицы БД. Первый называется статус и не меняется. Он содержит два столбца, один для идентификатора и другой вызываемый статус, который содержит значения «В очереди», «В процессе» «Обработано»

Вторая таблица называется Activity и использует FK для ограничения статуса действия

Используя свободный Nhibernate, если я хочу вставить новую строку в Table.Activity, мне нужно сослаться на «status» сущности (таблицы) в Entity Entity и связанном сопоставлении, например:

public virtual Status Status { get; set; }  // Activity Entity Class

References(a => a.Status);  // Activity Mapping Class

И если бы я сделал это, то как бы я сохранил новую сессию

session.Save(new Activity
{
    Name = "Activity A1DD", 
    Status = new Staus { ID = 1 } // But can't do that cause its expecting an object
}

Альтернатива, которую я вижу, состоит в том, чтобы просто представить FK как целое число и создать класс enum, который представляет эту таблицу, и не беспокоиться об отношениях, используя свободный язык?

Спасибо

GB

1 Ответ

0 голосов
/ 09 марта 2012

либо использовать существующий статус

session.Save(new Activity
{
    Name = "Activity A1DD", 
    Status = session.Get<Status>(1)
});

сказать ему использовать существующий статус в базе данных с заданным идентификатором (без загрузки)

session.Save(new Activity
{
    Name = "Activity A1DD", 
    Status = session.Load<Status>(1)
});

исключить всю таблицу Status и использовать вместо нее Enum (достаточно, когда у статуса нет свойств / поведения)

session.Save(new Activity
{
    Name = "Activity A1DD", 
    Status = Status.InProcess
});
...