使用STE在子对象中启用ChangeTracking

时间:2011-05-13 15:50:21

标签: self-tracking-entities change-tracking

我正在使用STE,我想为对象及其子对象启用更改跟踪。我现在要做的就是这样。

int id = 1;

using(CustomerEntities context = new CustomerEntities())
{
    CustomerSection custSection = context.CustomerSections.Include("CustomerSections.Customers").SingleOrDefault(p => p.ID == id);

custSection.StartTracking();

    foreach(Customer cust in custSection.Customers)
    {
        cust.StartTracking();
    {

    return custSection;

}

我正在寻找的是一种自动启用子对象更改跟踪的方法,无需遍历每个对象并明确告诉它开始跟踪更改。

提前感谢任何见解。

1 个答案:

答案 0 :(得分:0)

很可能您正在将自我跟踪实体与WCF结合使用。然后,不需要手动启用更改跟踪。这已经为你完成了。生成STE的T4模板包括一个用[OnDeserialized]属性修饰的方法,该属性在反序列化实体后开始跟踪(在到达客户端之后正常发生,并从WCF为传输生成的xml转换回运行时类实例。请参阅确切的代码示例:

    [OnDeserialized]
    public void OnDeserializedMethod(StreamingContext context)
    {
        IsDeserializing = false;
        ChangeTracker.ChangeTrackingEnabled = true;
    }

搜索您的实体或T4模板,您很快就会发现这一点。