如何在不扩展到相关导航属性的情况下检索计算出的属性?

问题描述 投票:6回答:2

我在这里遵循了很好的建议(Handling calculated properties with breezejs and web api),以允许Breeze访问我在服务器端的部分类中设置的计算属性:

    public partial class EventPerson
{
    [NotMapped]
    public Decimal TotalAmountPaid
    {
        get
        {
            return this.EventPersonPayments.Sum(p => p.AmtPaid);
        }
    }
}

但是对于我检索到的每个EventPerson,除非我在客户端使用.expand(“ EventPersonPayments”)或在服务器端使用.Include(“ EventPersonPayments”),否则该值显示为0。

我不希望EventPersonPayments中的所有数据都被序列化并发送给客户端;我想要的就是总价值。这可能吗?

编辑:如果我的计算属性是从实体中已经存在的其他属性派生的,则它可以正常工作。例如:

    public partial class EventPerson
{
    [NotMapped]
    public String DisplayName
    {
        get
        {
            return this.FirstName + " " + this.LastName;
        }
    }
}

返回JSON有效负载中的DisplayName。除非我专门加载所有额外信息,否则以前的计算属性类型始终返回0或null。

我曾考虑将它们转换为SQL Server中的用户定义函数,但我不必为了使它按应有的方式扔掉C#代码。

我遵循了很好的建议(使用breezejs和Web api处理计算的属性,以允许Breeze访问我在服务器端的部分类中设置的计算的属性:...

c# breeze
2个回答
3
投票
一种方法是使用一种包含要查询的实体和一些计算出的属性的投影。即您的服务器查询可能如下所示:

2
投票
我也遇到了这个问题,似乎还有其他一些问题/答案指向正在发生的事情:
© www.soinside.com 2019 - 2024. All rights reserved.