保存新实体时会发生奇怪的事情...... 我有一个数据网格,其中包含使用域数据源填充的“Depots”列表。 当用户想要添加新的“Depot”时,会发生以下情况:
Depot newDepot = new Depot();
newDepot.Name = "My New Depot";
EditDepot popup = new EditDepot(newDepot); // create the popup and pass the newly created Depot
domainDataSource.DataView.Add(newDepot); // add a new Depot to the datagrid
// handle the popup events
popup.CancelClick += (cancelSender, cancelArgs) =>
{
if (GridDataSource.DataView.Contains(newDepot))
domainDataSource.DataView.Remove(newDepot);
domainDataSource.DomainContext.RejectChanges();
};
popup.Show();
弹出构造函数然后将实体传递给viewmodel。然后,viewmodel构造函数创建一个新的'ContactInfo'实例,另一个实体链接到'Depot'(Depot.ContactInfo)。填写一些属性后,“Depot”将分配给viewmodel中的属性,并使用dataform编辑数据。一旦用户对内容感到满意,他们将按保存。将Depot添加到上下文(Context.Depots.Add ....),然后提交更改。 (值得注意的是,我也尝试将ContactInfo项添加到上下文中,没有任何乐趣)。数据保存到数据库(通过WCF),一切似乎都正常工作。问题是数据网格没有显示ContactInfo字段,就像保存之前一样。当用户编辑数据时,您可以看到弹出窗口后面填充的数据网格。如果用户刷新,则返回数据。编辑实体时不会发生此问题。 现在,在工作中抛出另一个扳手......这不会发生在我们所有的机器上...... 我们有一个构建机器,输出确实有这个问题,但是建筑物中的一台机器构建了一个没有这个问题的版本!经过一番调查,我们发现它似乎是WCF RIA Services的版本。在我的机器上,我有V1.0 SP1。我试过V1.0 SP2仍然有同样的问题。现在,在可运行的机器上,安装了WCF RIA Services SP1 Beta。在他解除了这个并且安装了SP2之后,他的机器上出现了问题。 因此,我们在最终版本中使用测试版是重要的,但除非我们能解决这个问题,否则我们无法做出选择。有没有人有任何想法?有没有人见过这个问题?
我也尝试了不同版本的WCF工具包,没有任何乐趣
编辑:我创建了一个简单的项目来向您展示发生了什么 该项目检索一组实体并尝试添加一个实体。你会注意到'InnerThing'属性消失了。 Link to project
答案 0 :(得分:0)
问题是密钥属性是在服务中的insert方法中设置的。 看起来这种变化没有反映在客户端。但是,在提交密钥之后更改服务中的其他属性确实有效。