2012-01-19 4 views
1

내 프로젝트에서 내 db와의 인터페이스를 위해 C# VS2010 TableAdapter 마법사를 사용하고 있습니다. 조인을 사용하고 자체 생성 할 수 없기 때문에이 어댑터에 대한 자체 삽입, 업데이트 및 삭제 명령을 생성했습니다. 괜찮아요,하지만 불행히도 내가 삽입 명령을 만들 때 나는 "Insert()"메서드를 호출 할 수 없습니다 tableadapter. 다른 방법은 잘 작동합니다. 예를 들어 C# TableAdapter 삽입 메서드 없음

,

'= this.joinTableAdapter 새로운 MyTableAdapter();

this.joinTableAdapter.Insert() < - exist.`하지 않습니다

그것은 나의 이해이었다이 방법은 테이블 어댑터에 표시하게되어있는 것을 유효한 삽입 명령을 작성하면 그. 나는 이것에 대해 오해하고 있는가? 내 업데이트 및 삭제 명령을 위해 노력하고 있습니다. 내가 뭘 잘못하고 있는거야?

도움을 주시면 감사하겠습니다. 모두에게 감사드립니다!

+0

진실해야합니다. 어떤 이유로 MSDN 설명서에서 DataTable을 찾을 수 없습니다. –

+0

저는 프로젝트에 DataSets를 사용하고 있습니다. 그것은 테이블 어댑터에서 .Update() 메서드에 대한 언급을하지만, .Insert()에 대해서는 언급하지 않았습니다. 이상한, 빠른 응답을 주셔서 감사합니다 ... – ImGreg

답변

1

TableAdapter에의 GenerateDbDirectMethods

InsertCommand, UpdateCommand 및 DeleteCommand 이외에도는 TableAdapters는 데이터베이스에서 직접 실행될 수있는 방식으로 생성된다. 이러한 메서드 (TableAdapter.Insert, TableAdapter.Update 및 TableAdapter.Delete)는 데이터베이스의 데이터를 조작하기 위해 직접 호출 할 수 있습니다.

이러한 직접 메서드를 만들지 않으려면 속성 창에서 TableAdapter의 GenerateDbDirectMethods 속성을 false로 설정하십시오. TableAdapter에 추가 된 추가 쿼리는 독립 실행 형 쿼리이므로 이러한 메서드를 생성하지 않습니다.

두 번째 마지막 페이지의 디자이너에서이 옵션을 찾을 수 있습니다. 참고

데이터베이스에 직접 업데이트를 보내는 방법을 만들기 : 이것은 다음 고급 옵션 및 클릭 동일하지 않습니다 클릭

삽입, 업데이트 및 삭제 문 생성

이 옵션을 선택하면 마법사는 SQL 문 생성 페이지에 정의 된 SELECT 문을 기반으로 INSERT, UPDATE 및 DELETE 문을 생성합니다.


편집 : TableAdapter에가 삽입, 업데이트를 생성하고 하나 개 이상의 테이블이 주요 선택 쿼리에 포함될 때 자동으로 문을 삭제할 수 없습니다

. 관련 테이블의 하나 이상의 열이 필요한 경우 여러 가지 방법이 있습니다. 가장 좋은 방법은 요구 사항에 따라 다릅니다.

  1. 수동으로 TableAdapter에 삽입, 업데이트 및 삭제 쿼리를 추가하십시오.이러한 메서드는 TableAdapter 인스턴스에서 직접 호출 할 수 있습니다. (InsertUser(param1,param2))
  2. 삽입, 업데이트 및 삭제 명령을 TableAdapter (디자이너 또는 프로그래밍 방식)에 수동으로 추가합니다. 이러한 명령은 Update을 호출 할 때 TableAdapter에서 암시 적으로 트리거됩니다. DataRow의 RowState은 트리거되는 명령을 결정합니다 (예 : Added-> InsertCommand).
  3. 하나 개의 테이블을 선택하고 필요한 모든 열을 얻을 수있는 관련 테이블을 조인 LINQ-To-DataSet를 사용할 수있는 세 번째 방법의 경우 데이터 집합

다른 테이블의 관계를 통해 테이블을 조인 (FE는 대한 데이터 소스를 만들려면 GridView).

+0

. 내 선택 진술에 innerjoin을 가지고 있기 때문에 GenerateDbDirectMethods를 사용할 수 없다. 이전에 두 링크를 모두 겪어 왔지만 왜이 문제가 발생하는지 설명하지 못했습니다. 이 Insert Query를 수동으로 추가했지만 tableadapter에이 명령이 있다는 것을 인식하지 못합니다. – ImGreg

+0

테이블이 주 선택 쿼리에 관련된 경우 TableAdapter에서 insert, update 및 delete 문을 만들 수 없습니다. TableAdapter에 수동으로 쿼리를 추가하거나 하나의 테이블 만 선택하고 DataSet의 관계를 통해 테이블을 조인해야합니다. –

+0

나는 그것을 위해 나를 창조하고 싶지 않아! 수동으로 테이블 어댑터에 대한 삽입 명령을 만들었습니다. 그러나 실제로 테이블 어댑터에서 Insert를 호출하려고하면 존재하지 않습니다. Whyyyy! 내 tableadapter.Update()는 완벽하게 작동하며 똑같은 방식으로 처리했습니다. Sad panda :(. – ImGreg

0

JOIN 쿼리로 작업하는 네 번째 방법이 있습니다.

테이블 어댑터의 기본 쿼리의 경우 조인을 생략하십시오. 그런 다음 수동으로 열을 데이터 테이블에 추가하고 SourceColumn을 추가 할 필드의 정확한 철자로 설정하십시오. 마지막으로 조인이 포함 된 테이블 어댑터에 새 쿼리를 추가하고이 쿼리를 호출하여 응용 프로그램의 데이터 테이블을 채 웁니다.

너무 짧으면 알려 주시기 바랍니다. 더 자세히 설명해 드리겠습니다. tableadaptor에 데이터 세트 클릭으로

0

이동 및 속성 "GenerateDBDirectMethods"에 대한 설정 확인 - 내가 ** 삽입() ** 정적 메서드 추측하기 위하여려고하고있다