Самостоятельное отслеживание Entity Framework и клиент, не отслеживающий изменения

Почему мой клиент не отслеживает изменения. Мой код ниже

Сервер WCF с включенными сущностями самоотслеживания

 public class TrialService : ITrialService
{

        public Project GetProjectByID(int _projectId)
    {
        var db = new TrialEntitiesService.FringeNETEntities();

        return db.Projects.Include("Items.SubItems").First(s => s.ProjectID == _projectId);
    }

    public Item UpdateItem(Item _item)
    {
        var db = new TrialEntitiesService.FringeNETEntities();

        _item.Actual = 100000;
        db.Items.ApplyChanges(_item);
        db.SaveChanges();
        return _item;
    }



}

и клиент

    public MainWindow()
    {
        InitializeComponent();
        using (TrialServiceClient proxy = new TrialServiceClient())
        {

            radGridView1.ItemsSource = proxy.GetProjectByID(37).Items;
            return;
        }
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        using (TrialServiceClient proxy = new TrialServiceClient())
        {

            proxy.UpdateItem((Item)radGridView1.SelectedItem);

        }
    }
}

Я предполагал, что элемент в первом вызове также будет обновлен. Разве это не то, чего достигают сущности с самостоятельным отслеживанием, или я упускаю большую картину.

Если это не нужно, самоотслеживающие сущности предназначены для того, как мне лучше всего добиться этого, а не вручную находить и изменять элемент из первого вызова сервера.


person Christopher Leach    schedule 24.08.2011    source источник
comment
Как вы создали свой прокси? Является ли проект с STE общим для клиента?   -  person Ladislav Mrnka    schedule 24.08.2011
comment
Привет, после создания приложения-службы WCF и модели EF следующим шагом было использование элемента генератора кода STE. Клиентское приложение было добавлено в решение, а ссылка на службу была создана из обозревателя решений.   -  person Christopher Leach    schedule 24.08.2011


Ответы (1)


При использовании STE вы не можете просто добавить ссылку на службу в службу. Сначала необходимо добавить ссылку на сборку, содержащую STE, и убедиться, что типы из этой сборки повторно используются при добавлении ссылки на службу. В противном случае ваш клиент получит новую реализацию сущностей, не содержащих функции самоотслеживания. Два прохождения:

person Ladislav Mrnka    schedule 24.08.2011