代码之家  ›  专栏  ›  技术社区  ›  Mike

来自不同数据库的Nhibernate createsqlquery不会持久化

  •  0
  • Mike  · 技术社区  · 16 年前

    我首先尝试从数据库中提取客户,但是如果我的客户不存在,那么我会调用服务器上的另一个数据库来获取信息。然后我想把客户信息保存在我的数据库中。会话当前已连接到我的数据库。

    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();
        }
    
    }
    

    有没有办法强制插入/更新?

    1 回复  |  直到 16 年前
        1
  •  2
  •   Diego Mijelshon    16 年前

    NHibernate无法知道您正在查询另一个数据库,这就是为什么它认为实例已经是持久的,并且不再尝试插入。

    Insert 方法。 Evict 不过也没那么糟。

    推荐文章