다음을 통해 공유


방법: LinqDataSource 컨트롤을 사용하여 데이터 업데이트, 삽입 및 삭제

업데이트: 2007년 11월

LinqDataSource 컨트롤을 사용하면 사용자가 데이터를 업데이트, 삽입 및 삭제할 수 있게 하는 웹 페이지를 만들 수 있습니다. LinqDataSource 컨트롤이 이러한 작업을 위해 동적으로 만들어진 명령을 사용하므로 SQL 명령을 지정할 필요가 없습니다. 사용자가 데이터를 수정할 수 있게 하려면 LinqDataSource 컨트롤에서 업데이트, 삽입 또는 삭제 작업을 사용하도록 설정하면 됩니다. 그런 다음 DetailsView 또는 GridView 컨트롤과 같이 사용자가 데이터를 업데이트할 수 있게 하는 데이터 바인딩된 컨트롤에 컨트롤을 연결합니다. 업데이트할 값을 사용자 지정하려면 매개 변수를 추가하거나 이벤트 처리기를 만들고 값을 동적으로 변경하면 됩니다.

이 항목에서는 LinqDataSource 컨트롤을 사용하여 업데이트, 삽입 및 삭제 작업을 자동으로 사용할 수 있도록 설정하는 방법에 대해 설명합니다. 또한 업데이트하는 값을 사용자 지정하는 방법에 대해 설명합니다. 마지막으로 데이터베이스 레코드를 삽입 또는 업데이트하기 전에 속성을 프로그래밍 방식으로 설정하기 위해 이벤트 처리기를 만드는 방법을 살펴봅니다.

자동 업데이트, 삽입 및 삭제 작업을 사용하도록 설정하는 단계는 서로 비슷하며 이 항목의 절차에서는 세 가지 기능을 모두 사용하도록 설정하는 방법을 보여 줍니다. 그러나 이러한 기능을 모두 사용하도록 설정할 필요는 없으며 필요한 기능만 사용하도록 설정할 수 있습니다.

LinqDataSource 컨트롤에 익숙하지 않으면 LinqDataSource 웹 서버 컨트롤 개요연습: LinqDataSource 및 DetailsView 컨트롤에서 정보 검색, 업데이트, 삽입 및 삭제를 참조하십시오.

데이터 자동 업데이트, 삽입 및 삭제

LinqDataSource 컨트롤에서 데이터 업데이트를 자동으로 처리할 수 있게 하려면 다음 설정이 필요합니다.

데이터 업데이트, 삽입 및 삭제를 사용하도록 설정하려면

  1. ASP.NET 웹 페이지에 LinqDataSource 컨트롤을 추가합니다.

  2. ContextTypeName 속성을 DataContext 클래스에서 파생되는 개체의 이름으로 설정합니다.

    Visual Studio 2008에서 개체 관계 디자이너를 사용하여 SQL 데이터베이스 테이블을 나타내는 클래스를 만들 경우 생성된 클래스는 자동으로 DataContext에서 파생됩니다.

  3. TableName을 연관된 데이터베이스 테이블을 나타내는 엔터티 클래스의 이름으로 설정합니다.

  4. LinqDataSource 컨트롤의 EnableUpdate, EnableDeleteEnableInsert 속성을 true로 설정합니다.

  5. DetailsView 컨트롤과 같은 데이터 바인딩된 컨트롤을 추가하고 해당 DataSourceID 속성을 LinqDataSource 컨트롤의 ID로 설정합니다.

  6. 데이터 컨트롤의 DataKeyNames 속성을 테이블의 특정 기본 키 열 또는 여러 기본 키 열의 이름으로 설정합니다.

  7. 사용자가 업데이트, 삭제 또는 편집 모드로 전환할 수 있게 하는 방법을 데이터 바인딩된 컨트롤에서 제공합니다.

    예를 들어, 데이터 바인딩된 컨트롤에 단추를 추가하거나 컨트롤에서 이러한 단추를 자동으로 만들도록 설정할 수 있습니다.

    다음 예제에서는 LinqDataSource 컨트롤 및 DetailsView 컨트롤을 포함하는 ASP.NET 웹 페이지의 일부에 대한 선언 태그를 보여 줍니다. 사용자가 Products라는 테이블에서 데이터를 표시, 업데이트, 삽입 및 삭제할 수 있도록 컨트롤이 구성됩니다.

    <asp:LinqDataSource
      ContextTypeName="ExampleDataContext"
      TableName="Products"
      EnableUpdate="true"
      EnableInsert="true"
      EnableDelete="true"
      ID="LinqDataSource1"
      >
    </asp:LinqDataSource>
    <asp:DetailsView
      DataSourceID="LinqDataSource1"
      DataKeyNames="ProductID"
      AutoGenerateEditButton="true"
      AutoGenerateDeleteButton="true"
      AutoGenerateInsertButton="true"
      AllowPaging="true"
      ID="DetailsView1"
      >
    </asp:DetailsView>
    

데이터를 업데이트, 삽입 또는 삭제하기 위한 매개 변수 추가

기본적으로 데이터를 업데이트, 삽입 또는 삭제하기 위해 매개 변수를 추가할 필요가 없습니다. 데이터 바인딩된 컨트롤은 해당 값을 LinqDataSource 컨트롤에 전달하며 LinqDataSource 컨트롤은 이러한 값을 사용하여 해당 속성을 설정합니다. LINQ to SQL은 데이터 소스를 수정하기 위한 명령을 만듭니다. 자세한 내용은 LINQ to SQL을 참조하십시오.

업데이트, 삽입 또는 삭제 작업을 위한 매개 변수를 지정할 수 있습니다. 기본값을 제공하려는 경우나 빈 문자열 값이 null로 변환되는지 여부를 정의하려는 경우 이 작업을 수행합니다. 업데이트 또는 삽입하려는 각 값이 아니라 사용자 지정할 값에 대한 매개 변수만 지정하면 됩니다. 매개 변수에 의해 정의되지 않은 모든 값은 LinqDataSource 컨트롤이 자동으로 처리합니다.

LinqDataSource 컨트롤에는 매개 변수 관리를 위한 UpdateParametersInsertParametersDeleteParameters 컬렉션이 포함되어 있습니다.

데이터 업데이트, 삽입 및 삭제를 위한 매개 변수를 추가하려면

  • 수정할 각 값에 대한 매개 변수 정의를 추가합니다.

    다음 예제에서는 Category 속성에 대한 매개 변수를 추가하는 방법을 보여 줍니다. 매개 변수는 UpdateParametersInsertParameters 컬렉션 모두에 추가됩니다.

    <asp:LinqDataSource
      ContextTypeName="ExampleDataContext"
      TableName="Products"
      EnableUpdate="true"
      EnableInsert="true"
      EnableDelete="true"
      ID="LinqDataSource1"
      >
      <UpdateParameters>
        <asp:Parameter Name="Category" DefaultValue="Miscellaneous" />
      </UpdateParameters>
      <InsertParameters>
        <asp:Parameter Name="Category" DefaultValue="Miscellaneous" />
      </InsertParameters>
    </asp:LinqDataSource>
    

    사용자가 Category 속성에 대한 값을 제공하지 않을 경우 기본값이 데이터베이스에 저장됩니다.

프로그래밍 방식으로 값 설정

데이터 작업이 수행되기 전에 속성을 프로그래밍 방식으로 설정하려면 LinqDataSource 컨트롤의 Inserting, UpdatingDeleting 이벤트에 대한 이벤트 처리기를 만들면 됩니다. 이벤트 처리기에 설정하지 않은 모든 속성은 LinqDataSource 컨트롤에 의해 자동으로 설정됩니다.

값을 프로그래밍 방식으로 설정하려면

  1. LinqDataSource 컨트롤의 Inserting, Updating 또는 Deleting 이벤트에 대한 이벤트 처리기를 만듭니다.

  2. 수정할 값을 프로그래밍 방식으로 설정하는 코드를 이벤트 처리기에 추가합니다.

    업데이트, 삽입 또는 삭제할 데이터는 다음 속성에 있습니다.

    이벤트

    속성

    클래스

    Inserting

    NewObject

    LinqDataSourceInsertEventArgs

    Updating

    NewObject

    OriginalObject

    LinqDataSourceUpdateEventArgs

    Deleting

    OriginalObject

    LinqDataSourceDeleteEventArgs

    이러한 모든 속성은 Object 형식의 개체를 반환합니다. 이러한 속성에서 반환된 개체는 데이터를 나타내는 엔터티 클래스 형식으로 캐스팅할 수 있습니다. 캐스팅한 후 해당 형식에 대한 속성을 설정할 수 있습니다.

    다음 예제에서는 DateModified 열을 현재 날짜 및 시간으로 설정하는 Inserting 이벤트에 대한 이벤트 처리기를 보여 줍니다. NewObject 속성의 개체는 Product 형식으로 캐스팅됩니다.

    Protected Sub LinqDataSource_Inserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.LinqDataSourceInsertEventArgs)
        Dim product As Product
        product = CType(e.NewObject, Product)
        product.DateModified = DateTime.Now
    End Sub
    
    protected void LinqDataSource_Inserting(object sender, LinqDataSourceInsertEventArgs e)
    {
        Product product = (Product)e.NewObject;
        product.DateModified = DateTime.Now;
    }
    

    다음 예제에서는 LinqDataSource_Inserting 메서드를 Inserting 이벤트에 바인딩하는 LinqDataSource 컨트롤의 선언 태그를 보여 줍니다.

    <asp:LinqDataSource
      ContextTypeName="ExampleDataContext"
      TableName="Products"
      OnInserting="LinqDataSource_Inserting"
      EnableUpdate="true"
      EnableInsert="true"
      EnableDelete="true"
      ID="LinqDataSource1"
      >
    </asp:LinqDataSource>
    

코드 컴파일

LinqDataSource 컨트롤을 사용하여 데이터를 업데이트, 삽입 또는 삭제하려면 데이터베이스 테이블을 나타내는 엔터티 클래스를 만들어야 합니다. Visual Studio 2008에서 개체 관계 디자이너를 사용하여 엔터티 클래스를 만들 수 있습니다.

보안

이 예제에는 사용자 입력을 허용하는 텍스트 상자가 있으므로 보안상 위험할 수 있습니다. 기본적으로 ASP.NET 페이지에서는 사용자 입력 내용에 스크립트나 HTML 요소가 포함되어 있지 않은지 유효성을 검사합니다. 자세한 내용은 스크립트 악용 개요를 참조하십시오.

연결 문자열을 저장하는 방법에 대한 자세한 내용은 방법: 데이터 소스 컨트롤을 사용하는 경우 연결 문자열 보안 유지를 참조하십시오.

오류 메시지에서 중요한 정보를 표시하지 않는 방법에 대한 자세한 내용은 방법: 안전한 오류 메시지 표시를 참조하십시오.

참고 항목

개념

LinqDataSource 웹 서버 컨트롤 개요

참조

Parameter