1

我首先使用 C# 2010 实体框架代码如果我有这样的类

partial class test    
{
        public double value1;
        public double value2;
        public double value3;
        public double totals;
}

由代码生成的

我如何创建部分类来计算总计

partial class test    
{
        public double totals { get  { return value1 + value2 + value3; }    }

1 - 您知道更改生成的类是不切实际的。2 - 无法部分定义属性总计。3 - 并且使用元数据类在保存更改之前不会更新总数。

如果有人可以定义我如何实现 OnpropertyChanged 并用于解决此问题,我将不胜感激

谢谢

4

1 回答 1

0

您在第二类中的属性缺少“get”关键字:

partial class test    
{
        public double totals {  
            get { return value1 + value2 + value3; }
        }
}

或者,您可以定义一个 Total() 方法。

据我从您的问题(“我如何创建部分类来计算总计”)中得知,您不需要使用 OnPropertyChanged,因为总计属性/方法每次都会使用总计中的新值运行计算。您可以从原始类中删除该字段,因为它是一个计算并且实际上不应该存储。

如果您必须实际更新数据库中的总值,则可以按照您的建议使用 OnPropertyChanged 部分方法。您需要使用属性来调用新方法:

partial class test
{
    public double Value1
    {
        get { return value1; }
        set
        {
            value1 = value;
            Onvalue1Changed(value);
        }
    }

    partial void Onvalue1Changed(double value)
    {
        UpdateTotals();
    }

    private void UpdateTotals()
    {
        totals = value1 + value2 + value3;
    }
}

您应该将原始字段设为私有,并且仅通过该属性提供公共访问。这不仅是更好的代码设计,而且还允许您实现所需的功能。

当然,您可以遵循其他模式,但这应该可以帮助您入门。

于 2012-06-20T05:32:26.270 回答