MySQL 서버 측과 XML 스키마 파일에서로드 된 ADO.NET 스키마 측에서 AutoIncrement가 활성화 된 ID 열이있는 DataTable이 있습니다. 그들의 유일한 사용은 테이블에 대한 기본 키를 가지고 있기 때문에 행을 삽입 할 때 이러한 ID를 신경 쓰지 않아도됩니다. 외부 키 참조가 없습니다. 그러나 DataTable은 새 행이 추가 될 때 이미 행을 포함합니다. 이자형. 1부터 시작하는 ID를 가진 행은 이미 DataTable에 있습니다.AutoIncrement가있는 DataTable.Rows.Add에 대한 ConstraintException
ID 열에 대한 기본 AutoIncrementSeed 값은 -1이고 AutoIncrementStep 값은 1입니다 (Visual Studio에서 제공 한 기본값 그대로). dataTable.NewRow()로 생성 될 때 ID가 -1과 0이되기 때문에 모든 것이 한 번에 두 개의 새 행을 삽입하기 만하면됩니다. 그러나 세 번째 행을 추가하려면 ID를 가져옵니다. 1 NewRow()가 배정 받았습니다. IDT = 1 인 행이 이미 있으므로 dataTable.Rows.Add (...)와 함께 새 행을 삽입하려고하면 ConstraintException이 throw됩니다.
ADO.NET의 AutoIncrement 항목을 사용하지 않도록 설정한다고 가정합니다. 스키마는 솔루션이 아닙니다. 왜냐하면 .Rows.Add()를 사용하여 행을 추가하기 전에 ID가 고유하다는 것을 확신해야하기 때문입니다.
이 문제를 쉽고 세련되게 해결할 수있는 방법은 무엇입니까? 지금은 이것이 매우 드문 일이라는 것을 상상할 수 없습니다.
감사합니다.
는 귀하의 회신을 주셔서 감사합니다,하지만 난 다른 뭔가를 찾고 있었다 생각합니다. 귀하의 접근 방식은 효과가 있지만 내 목표는 더 이상 ID를 지정하거나 확인하지 않아도되도록 조정하는 것이 었습니다. SQL INSERT 문에 ID가 언급되어 있지 않으므로 중요한 "오프라인"ID는 절대로 MySql 데이터베이스에 저장되지 않습니다. 그래서 나는 그들없이 "일할 수있는 방법이있을 것이라고 생각했다. – JayK