【问题标题】:Linq2SQL: Why doesn't datacontext update databaseLinq2SQL:为什么datacontext不更新数据库
【发布时间】:2009-10-25 07:33:56
【问题描述】:

这是我第一次使用 LINQ to SQL。我使用 SQL Server Express 数据库在设计器中创建我的 dbml。我创建了一个名为 StoredProcedure1 的存储过程,我也将它拖到了 dbml 中。然后我写了一些代码来测试我是否可以更新一些字段。问题是数据库没有发生更新,但是当数据绑定到 DataGrid 时我看到了更改。我不知道为什么它不起作用或我做错了什么。代码如下:

DataClasses1DataContext data = new DataClasses1DataContext();
List<StoredProcedure1Result> result = new List<StoredProcedure1Result>(data.StoredProcedure1());


int i = 0;
foreach (StoredProcedure1Result r in result)
{
    r.TestField = "A" + i.ToString();
   i++;
}

// to see what has changed, set break point on next line
var changeSet = data.GetChangeSet(); 

// submit changes and show result in datagrid
data.SubmitChanges();
dataGrid.ItemsSource = result;

存储过程只是从一个表中获取所有记录:

    USE [E:\test\test.MDF]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[StoredProcedure1]
AS
    SELECT  * FROM TEST_TABLE
    RETURN

【问题讨论】:

  • 我对你的问题感到困惑。存储过程到底在做什么?分配后的“更改”包含什么?据我所知,您的数据上下文对“结果”一无所知,因此更改“结果”然后在数据上下文上调用 SubmitChanges 可能不会做任何事情,这可能解释了您所看到的行为。跨度>
  • 如果您使用存储过程获取数据,我建议您也使用不同的存储过程更新数据。否则,用于基本数据检索和更新的 LinqToSql 会简单得多,根本不需要使用存储过程。可以做你正在做的事情,如果这是你真正需要的,希望有人会为你提供正确的答案。
  • 我用我正在使用的存储过程更新了我的问题。它只是从数据库中获取所有记录。 “更改”应包含已更改的内容,但显示 0 更新。我不明白你所说的数据上下文是什么意思,对“结果”一无所知?我在运行 data.StoredProcedure1() 时做错了什么?
  • 这对我来说是全新的,我只是在开始创建更复杂的程序之前尽量保持一切简单。此时,我只想看看我是否可以进行更新。

标签: linq-to-sql stored-procedures datacontext


【解决方案1】:

好吧,如果您不知道自己做错了什么,也许您可​​以尝试一些更简单的方法,例如对数据库中一些现有对象的经典选择查询、更新一些字段和 submitChanges()。然后,您可以通过将 Grid 绑定到您的选择返回的结果来构建您的示例,并在网格的正确事件处理程序中调用 SubmitChanges()。

【讨论】:

  • 这是我做的第一件事。使用 LINQ 查询可以立即工作。现在我开始使用存储过程。
【解决方案2】:

您应该通过 LinqToSql 直接更改数据库中的记录。更改从存储过程中检索到的结果不会更新数据库。

尝试这样的事情,而不是调用存储过程:

var result = data.TEST_TABLES();

【讨论】:

    【解决方案3】:

    我想通了。在 LINQ2SQL 设计器中,将 StoredProcedure1 的返回类型设置为 TEST_TABLE 而不是自动生成的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-25
      • 2016-12-12
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      • 2011-03-29
      相关资源
      最近更新 更多