代码之家  ›  专栏  ›  技术社区  ›  Juho Rutila

Fluent NHibernate:获取、更新和删除时的自定义条件(WHERE子句)

  •  0
  • Juho Rutila  · 技术社区  · 16 年前

    我有一张桌子,里面有许多顾客的资料

    ID | employeename | customerId
    ------------------------------
     1 | employee1    |  188
     2 | employee2    |  188
     3 | employee3    |  177
    

    WHERE customerId = 188 ?

    当前映射类似于:

    Id(x => x.Id);
    Map(x => x.Name).Column("employeename");
    Map(x => x.CustomerId).Column("customerId");
    

    添加 Where("customerId = 188") 只在SELECT中生成custom where子句。我需要在saveorupdate上执行以下UPDATE子句。

    UPDATE employees SET employeename="employ" WHERE ID = 2 AND customerId = 188;
    
    1 回复  |  直到 16 年前
        1
  •  0
  •   mynkow    16 年前

    你脑子里的这种SQL思维是错误的。

    1) 在Customer类中添加HasMany(x=>x.Employees).Inverse().AsSet()。
    2) 在员工类中添加引用(x=>x.Customer)。

    看这里: http://www.progware.org/Blog/post/NHibernate-inverse3dtrue-and-cascade3dsave-update-demo.aspx

    其思想是创建对象并为其赋值。之后,如果有正确的映射文件,NHibernate将执行SQL语句。不要编写sql查询,然后强制NHibernate生成完全相同的查询。相反,编写映射并查看SQL NHibernate生成了什么并尝试优化它。

    推荐文章