我正在使用实体框架的第一个实施,我遇到了需要计算列以及与视图交互的问题......
情景:
用户拥有FirstName和LastName。在列表框中,我想使用从FirstName和LastName生成的显示名称。一般来说,足够简单。问题来自于编辑名字或姓氏的时间。我使用INotifyPropertyChanged扩展了我的实体,并在T4模板中实现了它。我扩展了User实体以创建DisplayName属性。在视图中,我使用基于DisplayName的CollectionViewSouorce。
当编辑用户的名称时会出现此问题,但由于对FirstName或LastName而不是DisplayName进行了更改,因此不会发生通知。因此,CollectionViewSource永远不会获得DisplayName的更改通知。
我可以手动将OnPropertyChanged(" DisplayName")添加到FirstName和LastName属性中的User实体,但是下次我从DB更新模型时会覆盖它。
关于如何使这项工作的任何想法?
感谢。
Ĵ
答案 0 :(得分:0)
我会选择以下选项之一:
为您的partial class User
实体创建User
,其中实现了OnFirstNameChanged
,OnLastNameChanged
个方法,当您从模型重新生成类时,该类保持不变。
处理ObjectContext的context.ObjectStateManager.ObjectStateManagerChanged
事件
http://msdn.microsoft.com/en-us/library/system.data.objects.objectstatemanager%28v=vs.100%29.aspx
调整t4模板(基于您知道如何处理的问题),在生成FirstName
和LastName
属性设置器时调用自定义方法。
答案 1 :(得分:0)
记录......
我使用了部分类扩展,并且每当组成属性被更改并保存时,只是以编程方式触发DisplayName的OnPropertyChanged。