Nhibernate создает запрос из разных БД не будет сохраняться - PullRequest
0 голосов
/ 16 июля 2010

Я сначала пытаюсь вытащить клиента из БД, но если моего клиента не существует, то я вызываю sql другой БД на сервере, чтобы получить информацию.Я хотел бы сохранить информацию о клиенте в моей базе данных.Сессия в настоящее время подключена к моей базе данных.

var customer = Session.Linq<Customer>().FirstOrDefault(x=>x.customernumber == cusotmerNumber);

if(customer == null) {
    var sql = @"select ... from anotherdb.dbo.customer where customernumber = :customer";

    customer = Session.CreateSqlQuery(sql)
        .AddEntity(typeof(Customer))
        .SetInt32("CustomerNumber",CustomerNumber).List<Customer>().FirstOrDefault();

    using(Session.BeginTransaction()) {
        Session.Save(customer);
        Session.Transaction.Commit();
    }

}

Проблема, с которой я сталкиваюсь, заключается в том, что когда я вызываю Session.save, она не сохраняет клиента из альтернативной базы данных в мою текущуюдб.Если я вручную назначу все значения новому объекту клиента, то при сохранении файла .Save он сохранится.

Когда я смотрю на свойства транзакции после фиксации, она показывает флаг, что она была зафиксирована, и т. Д.и никаких ошибок не выдается.Я сделал то же самое с Session.Flush, Session.SaveOrUpdate и т. Д.

Есть ли способ принудительно вставить / обновить?

1 Ответ

2 голосов
/ 17 июля 2010

NHibernate не может знать, что вы запрашиваете другую базу данных, поэтому он считает, что экземпляр уже является постоянным и не пытается снова вставить.отслеживать сущности и использовать метод Insert.Evict не так уж и плохо.

...