我首先尝试从数据库中提取客户,但是如果我的客户不存在,那么我会调用服务器上的另一个数据库来获取信息。然后我想把客户信息保存在我的数据库中。会话当前已连接到我的数据库。
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(); } }
有没有办法强制插入/更新?
NHibernate无法知道您正在查询另一个数据库,这就是为什么它认为实例已经是持久的,并且不再尝试插入。
Insert 方法。 Evict 不过也没那么糟。
Insert
Evict