2010-01-18 4 views
1

기본 키가없는 테이블을 생성해야합니다. 테이블에 기본 키가 없다는 것이 절대적으로 필요합니다. 도와주세요.Subsonic 기본 키가없는 테이블 생성

+0

어떤 버전의 아음속을 사용하고 있습니까? 저장소 또는 activerecord를 사용하고 있습니까? – TheVillageIdiot

+0

액티브 레코드 버전 2.2 –

+0

그러나 문제는 많은 양의 데이터가 반복되어 기본 키를 만들 수 없다는 것입니다. 다른 솔루션이 있습니까 –

답변

1

시퀀스와 같은 것을 사용할 수없는 이유가 있습니까?

class Something { 
    private static final SEQUENCE seq = getDBsequence() 

    @id 
    private final long id = seq.newNumber(); 

    private final String whateverData; 
} 

편집 : 나는 당신이 응용 프로그램을 다시 부팅 한 번 때문에 좀 바보였다 쓴 방법. 당신은 중복 키를 얻을거야 .. 당신은 DB에서 제공하는 시퀀스를 사용해야합니다. 미안합니다.

5

그 테이블은 기본 키 :

들어있는 음속을 위해 절대적으로 필요하다 다음은 SubSonic docs on conventions에서 인용 다음

기본 키 액세스에 음속 사용하려면

테이블에 대해 정의 된 기본 키가 있어야합니다. 이것은 모든 경우에 좋은 습관이며 우리는 당신의 식탁에서 어떤 일을하기 위해 필요합니다. 기본 키가 정의되어 있지 않으면 클래스가 생성되지 않습니다.

우리를 믿지 않거나 이것이 어리석은 관습이라고 생각하는 경우 - 음속은 당신을위한 것이 아닙니다.

+0

그러나 문제는 많은 양의 데이터가 반복되어 기본 키가 될 수 없다는 것입니다. 어떤 다른 솔루션이 있습니까? –

+1

단순한 다른 ID 열을 추가하고 응용 프로그램 논리에서 사용하지 마십시오. 그러나 Subsonic은 레코드를 구별하기 위해 이것을 필요로합니다. – TheVillageIdiot

+0

아, @stalkerh도 그의 코멘트에 이것을 제안했습니다! – TheVillageIdiot

1

아담이 지적한대로 불가능합니다. 솔직하게 말해서 PK를 가질 수없는 상황 (OLAP 외부)을 생각할 수 없습니다. 또는 당신은 기존 상황에 갇혀 있습니다. 나는 그것을 파헤 칠 수 있습니다.

당신이 지적한대로 주위를 둘러보기 위해 할 수있는 일은 쿼리 도구를 사용하여 ToList <> 결과를 ​​보낼 수 있습니다. 업데이트는 동일한 방법으로 작동해야합니다. 삽입에 대해서는 확실하지 않습니다.

관련 문제