2012-06-20 96 views
1

我使用C#2010实体框架代码首先 使用OnPropertyChanged如果我有一个通过代码与实体框架代码首先

产生这样

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

类,我怎么能创造局部类calc下合计

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

1 - 您知道更改生成的类是不切实际的。 2 - 无法部分定义财产总计。 3 - 使用元数据类不会更新总计,直到savechanges。

我会很感激,如果任何人都可以定义我怎么能实现OnpropertyChanged并用来解决这个问题

感谢

回答

0

你的第二类属性缺失“获取”的文章:

​​

或者你可以定义一个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; 
    } 
} 

你应该把原来的领域私有的,只能提供通过属性的公共访问。这不仅是更好的代码设计,而且还允许您实现所需的功能类型。

当然,您可以遵循其他模式,但这应该让您开始。

+0

如果value1或value2或value3发生更改,我需要更新总计。我也无法从原始类中删除总数,而它是由ef自动生成的,并且存在于数据库中 – Sam1970

+0

脏的数据库设计...好吧,在这种情况下,您可以在部分类中定义部分的OnPropertyChanged方法(例如Onvalue1Changed(双值))。这里解释得很好:http://msdn.microsoft.com/en-us/library/cc716747.aspx – kad81

+0

我先使用代码。你能给我例子,我怎么可以添加Onpropertychanged到我的部分类。你附加的例子是EntityObject – Sam1970