Вопрос

Это мой первый шаг в LINQ to SQL. Я создаю свой dbml в конструкторе, используя базу данных SQL Server Express. Я создаю хранимую процедуру под названием 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
Это было полезно?

Решение 3

Я понял это. В конструкторе LINQ2SQL установите тип возвращаемого значения для StoredProcedure1 равным TEST_TABLE вместо автоматически созданного.

Другие советы

Ну, если вы не знаете, что делаете неправильно, возможно, вы могли бы попробовать что-нибудь попроще, например, классический запрос на выборку для некоторых существующих объектов в базе данных, обновить некоторые поля и submitChanges (). Затем вы могли бы построить свой пример, связав свою таблицу с результатами, возвращаемыми вашим выбором, и вызвать метод SubmitChanges () в корректном обработчике событий таблицы.

Вы должны напрямую изменить записи из базы данных через LinqToSql. Изменение результатов, полученных из хранимой процедуры, не приведет к обновлению базы данных.

Попробуйте что-то вроде этого вместо вызова хранимой процедуры:

var result = data.TEST_TABLES();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top