【问题标题】:In Lightswitch, how do I make a calculated field/property in an Entity/Table based on data in a record from a separate table?在 Lightswitch 中,如何根据来自单独表的记录中的数据在实体/表中创建计算字段/属性?
【发布时间】:2017-06-14 22:13:25
【问题描述】:

我目前在 C# 中有一个公式,用于 Lightswitch 实体/表 (HouseIncome) 中的计算属性。

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

NumberInhousehold 的数据类型为小数。 AnnualHouseHoldIncome 是 Money 的一种数据类型。这两个数字是每年变化的变量。 PFPLevel 是具有百分比数据类型的计算属性。对于此表中的每条记录,还有一个带有 Date 数据类型的就业日期属性。

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

我想根据在 HouseIncome 表的记录中输入的数据以及根据就业日期从 FPLGuidlines 表中提取的变量进行 PFPLevel 计算。因此,如果一个人在 2017 年有一份工作日期为 2017 年 6 月 17 日的记录,则该记录的 PFPlevel 将根据 NumberInHousehold、AnnualHouseHoldIncome 和从 2017 年记录中提取的指南计算。

在 FPLGuidelines 表中将有四个字段; Id、YearID、BaseIncome、PerIndividulalAmount 每年都有新记录。我不确定每个属性/字段需要哪些数据类型。

【问题讨论】:

    标签: c# visual-studio-lightswitch


    【解决方案1】:

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

    除了以下类型的计算属性方法之外:

    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 属性是可为空的 DateTime。

    【讨论】:

    • 克里斯。您的解决方案看起来很接近,但我收到一个错误:.**严重性代码描述行抑制状态错误 CS1061“ApplicationData”不包含“FPLGuidlines”的定义,并且没有扩展方法“FPLGuidlines”接受“ApplicationData”类型的第一个参数可以找到(您是否缺少 using 指令或程序集引用?) 23 Active**
    • 克里斯,现在,我遇到的唯一问题是在下面的 var 行中。 var hiy = 就业日期.日期.年份;其中 Date 带有红色下划线,并显示以下消息。 '日期时间?'不包含“日期”的定义,并且没有扩展方法“日期”接受“日期时间”类型的第一个参数?可以找到(您是否缺少 using 指令或程序集引用?)
    • 如果您的数据源名称不是 ApplicationData,您需要更改 DataWorkspace.ApplicationData 以反映您的数据源,例如DataWorkspace.YourDataSourceName。至于日期错误,我的示例基于 HouseIncome.EmploymentDate 属性不可为空。我将更新我的示例以演示可为空的 DateTime 的方法。
    • @Mark 我已经更新了我的示例,以反映您的 HouseIncome.EmploymentDate 属性是可以为空的 DateTime 并更正了 FPLGuide行错字。
    • @Mark 我很高兴它成功了,请您点击勾号将其标记为已接受的答案
    猜你喜欢
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多