Свободный дискриминатор Nhibernate от связанной с ними таблицы

StackOverflow https://stackoverflow.com/questions/9450032

Вопрос

У меня есть следующие 3 таблицы с примерными значениями

Vehicles ( id = 1, type_id = 20 , ... )
Vehicle_Types ( vt_id = 20, class_id = 160, ... )
Vehicle_Classes ( vcls_id = 160, name = "Concrete1" )
.

У меня есть

public class Concrete1 : Vehicle
{

}
.

И я хочу, чтобы Nibernate увеличивать конкретную запись1 при загрузке автомобиля № 1 в

Vehicle /*Concrete1*/ v = session.load<Vehicle>(1);

Как я мог сделать это с Automathings?Заранее спасибо.

EDIT1

Я начинаю думать, что это невозможно, поэтому любой обходной путь будет оценен.Любая подсказка для версии XML (без свободности) также может иметь большую помощь.

Это было полезно?

Решение

ОК, во-первых, плохие новости.

    .
  • Вы не можете иметь дискриминатор в отдельной таблице, период. Вы можете взломать это, используя оператор Select с присоединением в качестве источника table, но тогда ваша организация будет эффективно только для чтения. Или вы можете использовать представление, которое может работать, но делегирует больше работы в БД.
  • даже с правильным сопоставлением, session.load<Vehicle>(1) никогда не вернет полученный тип (за исключением того, что если вы отключите ленивую загрузку, что является плохой идеей, или если конкретный экземпляр уже загружен как таковой на сеансе). Вы можете получить конкретный экземпляр с

Другие советы

Я думаю, что этот пост на блоге nhibernate.info делает то, что вы хотите сделать.

http:// nibernate.info / blog / 2011/02/16 / get-load-polymorphism-in-nibernate-3.html

Если не может дать вам идею.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top