【问题标题】:NHibernate Criteria API with unmapped tables带有未映射表的 NHibernate Criteria API
【发布时间】:2011-07-13 10:25:02
【问题描述】:

我有一个类,对应的映射如下:

public class Customer
{
    public virtual int CustomerId { get; private set; }
    //...
    public virtual List<int> Orders { get; set; }
}

public class CustomerMap : ClassMap<Customer>
{
    public CustomerMap()
    {
        Id(x => x.PatientId)
            .GeneratedBy.Native();

        HasMany(x => x.Orders)
            .Element("OrderId", t => t.Type<int>())
            .Table("CustomerOrder")
            .KeyColumn("CustomerId")
            .ForeignKeyConstraintName("FK_Customer_Order")
            .Cascade.All();
    }
}

假设 Order 类在另一个数据库中,所以我不能在这个程序集中映射它。 (我不确定这是不是最好的方法,请随时对映射发表评论。)

所以我希望能够找到订单超过 N 个的客户,SQL 查询如下所示:

select * from Customer c where
    (select count(*) from orders where CutsomerId = c.CustomerId) > N

什么是 Criteria API 等效项?

【问题讨论】:

    标签: c# nhibernate criteria-api


    【解决方案1】:

    作为另一种选择,您是否可以不只是将 OrderCount 属性添加到您的 Customer 类,这样您就不需要加入到另一个数据库。

    您所做的任何加入跨数据库或加入未映射类的操作都感觉有点不对劲。

    【讨论】:

    • 我猜是这样,但由于存在将整数列表创建为属性的选项,因此应该有一种查询方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 2011-09-28
    相关资源
    最近更新 更多