2011-11-21 2 views
0

'System.Data.MissingPrimaryKeyException가 '가 system.data.dll는 기본 키 슬로우 DataTable에 설정되어, 아직 예외 '테이블 기본 키가없는 "

발생하다 정확한 예외

추가 정보 : 테이블에 기본 키가 없습니다.

그러나 기본 키를 설정했습니다. 이것은 코드입니다. 감사.

DataColumn[] PrimaryKeyColumns; //Global 
DataTable firstLinesDT = new DataTable(); 
column = new DataColumn(); 
column.DataType = System.Type.GetType("System.String"); 
column.ColumnName = "FirstLines"; 
column.Unique = true; 
firstLinesDT.Columns.Add(column); 

PrimaryKeyColumns = new DataColumn[1]; 
PrimaryKeyColumns[0] = column; 
firstLinesDT.PrimaryKey = PrimaryKeyColumns; 

column = new DataColumn(); 
column.DataType = System.Type.GetType("System.Int32"); 
column.ColumnName = "Length"; 
firstLinesDT.Columns.Add(column); 

column = new DataColumn(); 
column.DataType = System.Type.GetType("System.String"); 
column.ColumnName = "FilePath"; 
firstLinesDT.Columns.Add(column); 

**// EXCEPTION THROWN AT FIND OPERATION** 
DataRow foundRow = firstLinesDT.NewRow(); 
foundRow = firstLinesDT.Rows.Find(line); 

그리고 MSDN에 따르면, 기본 키가 예상되는이 정확히 세트 - 될 http://msdn.microsoft.com/en-us/library/system.data.datatable.primarykey.aspx

+1

이것은 실제로 문제를 파악하는 데 도움이되지 않지만 주어진 코드는 저에게 효과적입니다. 찾기 호출에 예외가 발생하지 않았습니다. –

+0

.net 버전은 무엇입니까? – NotMe

+0

.NET Framework 3.5. Arrgh! – PixelatedPixie

답변

0

나는 100 % 확실하지 않다,하지만 난 당신이 때까지 기본 키를 추가하지 마십시오 생각 다른 모든 열이 설정됩니다.

firstLinesDT.PrimaryKey = PrimaryKeyColumns;FilePath 열을 추가 한 지점 이후로 이동하십시오.

+0

글쎄요, 처음에는 시도해 보았지만 작동하지 않았고 코드를 옮겼습니다. 위의 코드처럼 보입니다. 결론 -> 둘 다 작동하지 않습니다. – PixelatedPixie

0

코드에 DataView이 포함되어 있지 않아서 질문에 대한 답변을 얻었는지 잘 모르겠다. 예제에서 중요하지 않다고 생각 했으므로 생략 한 것일 수 있습니다.

그러나 테이블을 DataView로 변환 한 다음 ToTable()을 다시 누르면 PrimaryKey가 제거됩니다.