它似乎支持实体。 实体框架4.1的易发性,自动变化跟踪(镜头)的开端。 然而,我迄今还没有发现这一点。
public class DomainContext : DbContext, IDomainContext
{
/// <summary>
/// Indicates whether changes have been made to the entity with that have
/// not been saved. This method assumes EF Proxies are being used for change tracking.
/// </summary>
/// <param name="entityId">The Id of the entity.</param>
/// <returns>True if the entity is dirty, false otherwise.</returns>
public bool HasChanges(Guid entityId)
{
foreach (DbEntityEntry entry in this.ChangeTracker.Entries())
{
IEntity entity = entry.Entity as IEntity;
if (entity != null)
{
if (entity.Id == entityId && entry.State != System.Data.EntityState.Unchanged)
{
return true;
}
}
}
return false;
}
}
上述方法似乎对作为参考/复合特性的实体的财产作了改动。 例如:
public class UserPreferences : EntityBase
{
/// <summary>
/// Comma delimited list of AFEs for which the user is interested in viewing Events.
/// </summary>
public virtual string ViewableAFEs { get; set; }
/// <summary>
/// The primary operating area for the user. This is used for defaulting purposes.
/// </summary>
public virtual OperatingArea PrimaryOperatingArea
{
get { return _primaryOpArea; }
set
{
if (_primaryOpArea != value)
{
_primaryOpArea = value;
RaisePropertyChanged(() => PrimaryOperatingArea);
}
}
}
}
如果我搬上上述类别,或从数据库中获取现有的用户参考实体,然后改变初级产品,域名。 HasChanges将回谎。 我认为,之所以出现这种情况,是因为实体框架跟踪复杂情况,参照性质不同于价值类型特性。
改变可观财产(扼制)确实是一种变化,将HasChanges方法称作上。
我的问题是,我如何暴露在我衍生的域名上的通用方法,以评估所有财产(包括复杂、参考、收集类型)并确定该实体是否为过错?
我很奇怪,你们的其他人是否利用EF4.1为吗? 是否通过利用INotificationPropertyChanged等,使你自己感到过错?
Thanks!