gpt4 book ai didi

fluent-nhibernate - FluentNHibernate : Nested component mapping results in NHiberate QueryException

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

嗨,我在 Nhibernate 中遇到映射问题。当我运行引用我的实体的组件类之一的 linq 查询时,我得到一个 QueryException,如下所示:

could not resolve property: ClosedCases of: Project.Entities.Headline



我有一张记录表,我想将这些记录映射到标题实体的多个对象中。

问题:

Is there something wrongly set up in my mapping?



我的 Headline实体被分成多个逻辑类,如下所示
  public class Headline:Entity
{
public virtual DateTime Date { get; set; }
public virtual TeamTarget Teamtarget { get; set; }
}

public class TeamTarget : Entity
{
public virtual DateTime FromDate { get; set; }
public virtual DateTime ToDate { get; set; }
public virtual TargetItem AchievedTarget { get; set; }
public virtual Team Team { get; set; }
}

public class TargetItem : Entity
{
public virtual decimal ClosedCases { get; set; }
public virtual decimal Invoicing { get; set; }
}

映射文件:
  public class HeadlineMap: ClassMap<Headline>
{
public HeadlineMap()
{
Table("Headlines.Headlines");
Id(x => x.Id).Column("HeadlinesId");
Map(x => x.Date);
Component(x => x.Teamtarget, t =>
{
t.References(x => x.Team).Column("TeamId").Cascade.None();
t.Component(x => x.AchievedTarget, ti =>
{
ti.Map(x => x.Invoicing).Column("TeamInvoicing");
ti.Map(x => x.ClosedCases).Column("TeamClosedCases");
});
});

我正在运行的 Linq 查询如下所示:
decimal closedCases = _headlineRepository.All
.Where(x =>
x.Date >= DateTimeExtensionMethods.FirstDayOfMonthFromDateTime(selectMonthFromDate)
&& x.Date <= DateTimeExtensionMethods.LastDayOfMonthFromDateTime(selectMonthFromDate)
&& x.Teamtarget.Team.Id == teamId
).Average(x => x.Teamtarget.AchievedTarget.ClosedCases);

我知道我可以通过团队 id 使用团队实体来访问标题项目,这有效,只是在实现目标的映射方面有问题。
有任何想法吗?

最佳答案

我认为你的映射很好。但据我所知,不可能使用 Linq to NHibernate 查询嵌套组件。它无法理解join要做什么,变得太复杂了。

我认为可以使用 NHibernate 3 的 QueryOver API 使用 JoinQueryOver 或 JoinAlias。你应该阅读这个:QueryOver in NH 3.0

也许这样的事情会起作用:

Headline headlineAlias = null;
TeamTarget targetAlias = null;
Team teamAlias = null;
TargetItem targetItemAlias = null;

var query = session.QueryOver<Headline>(() => headlineAlias)
.JoinAlias(() => headlineAlias.Teamtarget, () => targetAlias)
.JoinAlias(() => targetAlias.Team, () => teamAlias)
.JoinAlias(() => targetAlias.AchievedTarget, () => targetItemAlias)
.Where(x => x.Date >= DateTimeExtensionMethods.FirstDayOfMonthFromDateTime(selectMonthFromDate) && x.Date <= DateTimeExtensionMethods.LastDayOfMonthFromDateTime(selectMonthFromDate))
.And(() => teamAlias.Id == teamId)
.Select(Projections.Avg(() => targetItemAlias.ClosedCases))
.SingleOrDefault<decimal>();

关于fluent-nhibernate - FluentNHibernate : Nested component mapping results in NHiberate QueryException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6776889/

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