在 Lightswitch 中,如何根据来自单独 table 的记录中的数据在 Entity/Table 中计算 field/property?

In Lightswitch, how do I make a calculated field/property in an Entity/Table based on data in a record from a separate table?

我目前在 c# 中有一个公式,用于计算 Lightswitch Entity/Table (HouseIncome) 中的 属性。

result = NumberInHouseHold >= 1
? (AnnualHouseHoldIncome / (7880 + (NumberInHouseHold * 4180)))
: 0;

NumberInhousehold 的数据类型为十进制。 AnnualHouseHoldIncome 是 Money 的一种数据类型。这两个数字是每年变化的变量。 PFPLevel 是计算得出的 属性,数据类型为百分比。对于此 Table 中的每条记录,还有一个具有 Date 数据类型的 EmploymentDate 属性。

此计算在 2017 年非常有效,但在 2018 年和随后的几年中,我将不得不使用新指南重新编码计算字段,并且 PFPLevel 字段中显示的信息在 2017 年将不再准确。

我想根据在 HouseIncome table 记录中输入的数据和根据就业日期从 FPLGuidlines table 中提取的变量来计算 PFPLevel。因此,如果一个人在 2017 年有就业日期为 6/17/2017 的记录,则该记录将根据 NumberInHousehold、AnnualHouseHoldIncome 和从 2017 年记录得出的指南计算 PFPlevel。

在 FPLGuidelines table 中会有四个字段; Id、YearID、BaseIncome、PerIndividulalAmount 每年都会有一个新记录。我不确定每个 properties/fields.

需要什么数据类型

一种选择是使用以下类型的实体数据类型:

除了以下类型的方法外,您还可以计算 属性:

partial void PFPLevel_Compute(ref decimal result)
{
    if (EmploymentDate.HasValue)
    {
        var hiy = EmploymentDate.Value.Date.Year;
        var gl = DataWorkspace.ApplicationData.FPLGuidelines.Where(e => e.Year == hiy).Execute().FirstOrDefault();
        if (gl != null)
        {
            result = NumberInHouseHold >= 1
            ? (AnnualHouseHoldIncome / (gl.BaseIncome + (NumberInHouseHold * gl.PerIndividualAmount)))
            : 0;
        }
    }
}

以上示例基于您的 HouseIncome.EmploymentDate 属性 是可为 null 的 DateTime。