Включить отслеживание изменений в дочерних объектах с помощью STE - PullRequest
0 голосов
/ 13 мая 2011

Я использую 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 голосов
/ 30 июня 2011

Скорее всего, вы используете объекты самообследования в сочетании с WCF.Тогда нет необходимости включать отслеживание изменений вручную.это уже сделано для вас.Шаблон T4, который генерирует STE, включает в себя метод, украшенный атрибутом [OnDeserialized], который запускает отслеживание после десериализации объектов (что обычно происходит после достижения клиента и преобразования обратно в экземпляры класса времени выполнения из xml, созданного WCF для транспорта.Посмотрите точный пример кода:

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

Найдите ваши объекты или шаблон T4, и вы скоро это найдете.

...