2011-09-27 2 views
0

sqlite 테이블에 여러 데이터를 삽입하고 항상 동일한 ID를 반환합니다. 그러나 필드 ID는 PK + autoinc ID로 구성됩니다.sqlite .NET 공급자에서 외래 키 자동 증가가 작동하지 않습니다.

나는 연결 문자열로 사용 :

public static void SetConnectionString(string dataDataAccessPath) 
     { 
      _connectionString = String.Format(@"Data Source={0};Foreign Keys=ON", dataDataAccessPath); 
     } 

이 "외래 키 =의"이외의 연결에 구현 된 "PRAGMA의 foreign_keys = ON;" 모든 열린 연결에 대해 실행되어야했습니다. 를 ConnectionString에 새 속성이 잘못 ...

해야합니까 뭔가를 작동하지 않는 이유

지금 궁금해?

답변

0

저는 SQLite에 대한 전문가는 아니지만 (실지적으로 실제 경험이 없습니다) IDENTITY 입력란에 자동으로 증가하는 입력란이 테이블의 정의에 더 많은 것을 할 수 있다고 생각합니다. 사용중인 연결 문자열보다

당신이 FOREIGN KEY 자체가 증가 할 수 있음을 상기시켰다 될 아니라 당신은 PRIMARY KEY 당시 FOREIGN KEY 참조 역할을 IDENTITY 필드와 테이블을 증가해야합니다.

문제가있는 테이블의 정의를 추가 할 수 있습니까?

+0

이것은 내가하는 일입니다. 내 테이블에 PK + 자동 증가 ID가 있습니다. 하지만 다른 테이블에서는 hm으로 작동합니다 ... 3.7.7.1을 사용합니다. 흠 ... 나는 SQLIteTransaction 대신 TransactionScope을 사용하고 SQLiteCommand 객체의 Transaction + DbTransaction 속성은 NULL입니다. 어쩌면 문제가 있습니다 :/먼저 SQLiteTransaction을 사용하여 확인해야합니다. – msfanboy

+0

다른 테이블에서 작동하는 경우 연결 문자열과 아무 관련이 없어야합니다 (그러나 어쨌든 연결 문자열과 관련이 없어야합니다!). 실제 테이블과 비 작업 테이블을 생성하는 데 사용했던 SQL과 ID 필드를 증가시키지 않는 INSERT 코드를 실제로 게시하는 것이 좋습니다. –

+0

그만! ;-) 다른 테이블에 대해서는 다중 삽입을했을 때 작동하지 않았습니다. 방금 다른 삽입물을 위조했습니다. 연결 속성이 작동하지 않거나 TransactionScope 때문입니다. 나는 내일 그것을 보아라. – msfanboy