【发布时间】:2009-01-12 18:14:58
【问题描述】:
我们在我们的项目中使用 L2E 和 REST,虽然我能够毫无问题地从数据库中检索数据,但我仍然无法更新或向数据库添加新记录。我想这是一个语法问题(我们对 linq 还很陌生),但我无法弄清楚。我们最初在 dataservicecontext 中加载数据,并在进行更新时将它们存储在绑定源的CurrencyManager.Current 中。但是,当我调用 SaveChanges 时,数据库中没有任何内容被修改,我不知道为什么。
例如,
加载数据:
var customerQuery = Program.Proxy.Customers.Where(p => p.ContactId == g);
保存数据:
Program.Proxy.SaveChanges();
我已确认正在跟踪内存中实体的更新副本,因此我不需要调用AddObject,但我收到错误消息(“关闭类型 Lynxphere.WindowsClient.LynxphereDataServices .Customers 没有对应的 Customers 可设置属性。")如果我尝试调用 AddLink。而且我什至不确定这一步是否必要。非常感谢您的帮助。
【问题讨论】:
-
显示更多代码,例如实际修改。
-
我不确定要给你看什么。从实体中的数据库中提取的数据显示在各种文本框等中,供用户更新。我已经确认更新的数据位于 CurrencyManager 中,但我看不到它是如何映射回实体以进行数据库更新的。
-
再次:数据的实际修改。如果您在单个对象上下文中选择、修改和保存更改,则更改将返回到数据库。
-
我认为通过将控件直接绑定到数据源(文本框可能具有数据绑定“文本”字段:customersBindingSource - Contacts.LastName),将跟踪更改,然后将 SaveChanges足以将这些更改提交到数据库。我认为这是错误的?
-
ObjectDataSource 在原始上下文存在的情况下有效。在我看来,您没有使用与以前选择相同的上下文进行保存,但是(再一次)很难在没有看到您的代码的情况下说出来。
标签: rest linq-to-entities savechanges