小编mag*_*gix的帖子

流畅的NHibernate和过滤需要多个连接的查询的一对多关系?

我最近开始使用NHibernate,并且在实现下面概述的域模型时遇到了一些麻烦.

我正在寻找的是一种过滤Item和它在特定DataStore上的ItemData集合之间关系的方法.DataStore是全局的,在这种情况下,它们总是返回,或者特定于用户身份(基于应用程序实例).

在SQL中,这可以使用简单的查询来完成:

SELECT * FROM Items i
INNER JOIN ItemData id ON (i.ItemId=id.ItemId)
LEFT OUTER JOIN Users u ON (id.UserId=u.UserId)
LEFT OUTER JOIN DataStore ds ON (id.DataStoreId=ds.DataStoreId)
WHERE ds.IsGlobal = 1 OR ds.UserId = @userId
Run Code Online (Sandbox Code Playgroud)

数据库结构:

DataStore:
- DataStoreId (PK)
- Name
- Weight
- UserId
- IsGlobal

Item:
- ItemId (PK)
- ... (non-nullable fields)

ItemData:
- ItemDataId (PK)
- ItemId
- DataStoreId
- ... (nullable fields)
Run Code Online (Sandbox Code Playgroud)

领域模型:

public class ItemMap : ClassMap<Item>
{
    public ItemMap()
    {
        Id(x …
Run Code Online (Sandbox Code Playgroud)

nhibernate filtering nhibernate-mapping fluent-nhibernate nhibernate-criteria

3
推荐指数
1
解决办法
4688
查看次数