【问题标题】:Linq to SQL DataContext missing SET clause on calling SubmitChangesLinq to SQL DataContext 在调用 SubmitChanges 时缺少 SET 子句
【发布时间】:2019-01-23 11:55:27
【问题描述】:

我目前在检索数据集、更改数据集并调用 SubmitChanges 以将更改保存回数据库时遇到一些 C# Linq to SQL DataContext 错误行为。

我四处搜索,发现 this SO-Question 几乎指出了我的确切问题。

短大纲:

  • 我正在使用带有 SQLite 的 Linq to SQL,因此没有 VisualStudio 提供的设计器
  • 我正在创建与 In-Memory-Database 的连接
  • 我正在使用一个派生自 DataContext 的类,该类连接到基类和一个映射真实表的 Table 属性
  • 我已经使用 Log 属性来检索发送到数据库的实际命令,如下所示:

    UPDATE [Roles]
    SET 
    WHERE ([Id] = @p0) AND ([Name] = @p1)
    -- @p0: Input String (Size = 4000; Prec = 0; Scale = 0) [ea34d99e-8ad5-4fa7-83f3-5cf3ac282da6]
    -- @p1: Input String (Size = 4000; Prec = 0; Scale = 0) [Role 1]
    -- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 4.7.3056.0
    

如您所见,SET 子句是空的,这是我目前无法理解的。

由于我很确定需要更多信息才能理解该问题,因此请随时向我提问,我非常乐意让您加入。

有没有机会在这里以 zip 文件或类似文件的形式获取代码?

【问题讨论】:

  • 您使用 LINQ to SQL 而不是实体框架是否有特殊原因?
  • 直到现在我还没有研究过 EF,所以 Linq 是作为我以前至少知道一点的框架出现的。 EF 有什么好处?我希望这不是投反对票的原因^^
  • LINQ to SQL 已经很多年没有被积极开发了。除非您有非常强烈的理由使用它,否则您应该考虑转向 EF。
  • 好的,不知道这个事实。我试了一下,没有那么复杂(获胜的单元测试),而且工作起来很吸引人。感谢您为我指明正确的方向。

标签: c# linq-to-sql datacontext submitchanges


【解决方案1】:

迁移到实体框架已经解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多