我有一些从实现 INotifyPropertyChanged 的通用业务基类继承的 POCO。我也在 DAL 使用 EF5。如果我要获取单个竞争对手对象,如下所示:
public ICompetitorCard Fetch(long id)
{
return this.Fetch<ContactCardContext, ICompetitorCard>(
() => { return ContactCardContext.GetInstance(this); },
ctx =>
{
var query = from competitor in ctx.Competitors
where competitor.Id == id
select competitor;
return query.SingleOrDefault();
}, "ICompetitorCard Fetch(long id) failed");
}
我取回了被 EF5 很好地填充的 CompetitorCard 对象。问题是我不希望从 DAL 加载时触发通知。所以通常我可能会设置某种字段来跟踪对象是否已初始化。这很容易“正常”实现,但由于在这种情况下 EF 正在加载,我想知道我需要挂钩什么事件/虚拟方法才能设置
IsInitialised = true;
这样之后财产通知就会触发。我想我可以做类似的事情:
ICompetitorCard card = query.SingleOrDefault();
if (card!=null){card.IsInitialised = true;}
return card;
但这似乎过于冗长,破坏了封装并且对集合等来说是一种痛苦。因此,对于那些处理自己的 INotifyPropertyChanged 实现的人来说,他们如何使用 EF5 来管理它?