Entity Framework Self-Tracking и клиент не отслеживает изменения - PullRequest
0 голосов
/ 24 августа 2011

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

Сервер 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);

        }
    }
}

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

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

1 Ответ

1 голос
/ 24 августа 2011

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

...