为什么我的客户不跟踪更改。我的代码在下面
启用了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);
}
}
}
我假设第一次通话中的项目也会更新。这不是自我跟踪实体所实现的,或者我错过了大图片。
如果不希望自我跟踪实体是为了那么我将如何最好地实现这一点,而不是从第一次服务器调用中手动查找和修改该项目。
答案 0 :(得分:1)
使用STE时,您不能简单地将服务引用添加到服务中。必须首先添加对包含STE的程序集的引用,并确保在添加服务引用期间重用该程序集中的类型。否则,您的客户端将获得不包含自我跟踪功能的实体的新实现。两个演练: