: 나는이 myDataSet.xsd 파일에 테이블을 드롭,이 후 을 myDataSet.xsd. 그게 다야. 내가 원하는 건 에서 Sql Transaction의 함수를 빌드하는 것입니다.이 데이터 집합은 어떻게 처리 할 수 있습니까? SQL 또는 SqlTransaction
직접적인 관계가 없다 -Data.xsd
Data.xsd
답변
DataSet
는 인 - 메모리 구조이다.
나는 당신이 아마 SQL 트랜잭션을 사용하여 생성 된 TableAdapter
인스턴스에 대한 작업을 수행하기 위해 언급하는 것을 생각한다.
까다 롭습니다.
사힐 말리크 주제 (예, 그것은 정말 "대상"이다)에 primer 합리적으로 완전한 있습니다. 본질적으로 무엇을 모든 내부 SqlConnection
를 열고이 열려 보유하고 다시 손을 당신이 정상적으로 사용하십시오 SqlTransaction
BeginTransaction
방법으로 부분 클래스를 통해 TableAdapter
을 확장하고 아래로 비등. 번거로우 시겠지만 모든 TableAdapter
에 대해이 작업을 수행해야합니다. 또는 System.Transactions.TransactionScope
을 사용할 수 있지만 DTC (분산 트랜잭션) 로의 승격을 피하기 위해 다양한 농구대를 뛰어 넘어야합니다.
내가 복사 오히려 나보다, 링크 된 기사에서 살펴보고 여기에 코드를 붙여하는 것이 좋습니다 것입니다.
TableAdapters
이 많거나 일반적으로 단일 트랜잭션에서 두 개 이상을 결합해야하는 경우 Sahil의 방식은 너무 잘 확장되지 않습니다. 과거에는 (내가 여전히 TableAdapters
을 사용했을 때) Ryan Whitaker's과 비슷한 방법을 사용했습니다. 이는 기본적으로 원숭이 패치입니다. 그것은 대부분의 무거운 짐을 들어 Reflection을 사용합니다.
은 그 두 TableAdapter
코드는 트랜잭션 안전 만들기에 결정적인 자원의 종류입니다. 개인적으로, 나는 더 이상 타입이없는 DataSet
을 사용하지 않을 것입니다. Linq to SQL과 EF가 주위에 있고, 훨씬 강력하고, 지연된 실행을 가지며, 인 메모리 구조에 독점적으로 의존하지 않고, 테이블 데이터 게이트웨이 + 작업 단위 패턴을 사용하는 것은 매우 쉽습니다. 거래와 협력하는 것. 내 경험에 비추어 볼 때 이들이 충분하지 않다면 보통 DataSet
이 될 것이고 나는 SqlCommand
인스턴스로 떨어 뜨려야합니다. 그러나 어떤 이유로 데이터 액세스에 반드시 DataSet
을 사용해야하는 경우 위에서 언급 한 두 가지 방법 중 하나를 사용해야합니다.
감사합니다. 친구, 정말 잘했다. (나는 TableAdapters를 의미했다) – Cmptrb