2015-03-18 3 views
1

Я сделал некоторые исследования, так как я никогда не использовал NHibernate раньше, и я обнаружил, что, чтобы сохранить объект в базу данных, я должен использовать "SaveOrUpdate()" поэтому я следующее:Как NHibernate знает, какой стол сохранить?

Object myObject = new Object { someProperty="something" }; 
using (ISession session = NHibernateSessionFactoryManager.Factory.OpenSession()) 
{ 
    session.SaveOrUpdate(myObject); 
} 

я должен указать где-то в какой таблице I «Сохраняет ли, или NHibernate вычисляет это из типа объекта?

+1

Право второе: 'NHibernate цифра, что из типа объекта'. Но вам понадобится картография! :-) И я надеюсь, что первая строка: MyMappedObject myObject = new MyMappedObject {someProperty = "something"}; ' – xanatos

+0

ah ok, отображение huh. Я думаю, что кто-то другой написал где-то в приложении ... Да, я думаю, что это :) –

ответ

2

Если посмотреть на интерфейс ISession, вы увидите, что есть только два метода: SaveOrUpdate

void SaveOrUpdate(object obj); 

void SaveOrUpdate(string entityName, object obj); 

Вы используете первый, который использует отображение, которое вы определили для отображения obj.GetType() в стол.

Существует еще одна перегрузка, которая использует entityName, который следует использовать, если вы используете

Стойкие объекты не обязательно должны быть представлены в виде классов POCO во время выполнения. NHibernate также поддерживает динамические модели (используя словари словарей во время выполнения). При таком подходе вы не записываете постоянные классы, а только файлы сопоставления.

В этих файлах сопоставления вы должны определить сущность-имя.

Смежные вопросы