문제

이것은 LINQ에서 SQL에서 처음으로 이동합니다. SQL Server Express 데이터베이스를 사용하여 디자이너에서 DBML을 만듭니다. StoredProcedure1이라는 저장된 절차를 만듭니다. 그런 다음 일부 필드를 업데이트 할 수 있는지 테스트하기 위해 코드를 작성했습니다. 문제는 데이터베이스에 업데이트가 발생하지 않지만 데이터가 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