【问题标题】:Adding and Updating with LINQ to Entities使用 LINQ to Entities 添加和更新
【发布时间】: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


【解决方案1】:

使用 Save() 函数查看我的存储库模式,该函数发布在下面的项目中。 实现了一个 EntityProductRepository。 这可能会帮助您正确地进行更新和插入。

openticket.codeplex.com

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多