gpt4 book ai didi

nhibernate - 标准 API 和字典/ map 上的左连接

转载 作者:行者123 更新时间:2023-12-04 06:30:25 25 4
gpt4 key购买 nike

我有以下类(class):

public class Item
{
public int Id { get; set; }
public IDictionary<int, ItemLocal> { get; protected set; }
public ICollection<string> Tags { get; set; }
public int DefaultLanguageId { get; set; }
public DateTime Start { get; set; }
}

public class ItemLocal
{
public virtual Item Parent { get; set; }
public virtual int LanguageId { get; set; }
public string Title { get; set; }
public string Description { get; set; }
}

这些映射到表 Item、ItemTag 和 ItemLocal。我想通过标准 api 进行以下查询:
select
i.Id,
i.Start,
l.Title
from
Item i
left join ItemLocal l on i.Id = l.ParentId and i.DefaultLangaugeId = l.LanguageId
order by
l.Title,
i.Id

但我不知道如何使用 nhibernate 标准 api 执行左连接。特别是使用默认语言选择。

非常感谢任何帮助。

最佳答案

我找到了一个解决方案:

Session
.CreateCriteria<Item>("i")
.CreateCriteria("Localization", "l", NHibernate.SqlCommand.JoinType.LeftOuterJoin)
.Add(Restrictions.Disjunction()
.Add(Restrictions.EqProperty("i.DefaultLanguageId", "l.LanguageId"))
.Add(Restrictions.IsNull("l.LanguageId"))
)
.AddOrder(Order.Asc("l.Title"))
.AddOrder(Order.Asc("w.Id"));

这似乎有效,但会导致查询带有解决方法 WHERE 子句。宁愿看到它可以呈现 SQL 查询,其中析取中定义的限制可能是 OUTER LEFT JOIN ... ON ... 语句的一部分。

关于nhibernate - 标准 API 和字典/ map 上的左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5485968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com