实体框架自我跟踪和客户端不跟踪更改

时间:2011-08-24 02:13:40

标签: wcf entity-framework self-tracking-entities

为什么我的客户不跟踪更改。我的代码在下面

启用了selftracking实体的服务器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 个答案:

答案 0 :(得分:1)

使用STE时,您不能简单地将服务引用添加到服务中。必须首先添加对包含STE的程序集的引用,并确保在添加服务引用期间重用该程序集中的类型。否则,您的客户端将获得不包含自我跟踪功能的实体的新实现。两个演练: