Castle ActiveRecord를 기존 데이터베이스에 연결하고 일대 다 관계를 연결하는 데 문제가 있습니다. 문제는 외래 키가 다른 테이블의 기본 키를 참조하지 않고 다른 열을 사용한다는 것입니다.성 기본 키를 사용하지 않는 성 ActiveRecord 관계
CREATE TABLE [Rule](
[ID] [uniqueidentifier] NOT NULL,
[HeadingID] [int] NULL
)
CREATE TABLE [Heading](
[ID] [uniqueidentifier] NOT NULL,
[ID2] [int] NOT NULL
)
규칙 테이블의 HeadingID 필드는 제목의 ID2 필드를 참조하는 외래 키 :
이
은 (명확성을 위해 단축) 테이블입니다.그래서, 규칙 클래스의 정의에 내가 가진 : (I 물론 게으른 hasMany의를 설정 한 경우)
[BelongsTo(Column = "HeadingID", PropertyRef = "OrderID")]
public virtual Heading Heading { get; set; }
이 잘 작동하는 것 같다, 나는 문제없이 규칙의 제목에 액세스 할 수 있습니다 . 제목 클래스 정의에서
내가 가진 : 나는 컬렉션에 액세스 할 때[HasMany(Lazy = true)]
public IList<Rule> Rules { get; set; }
는 내가 SQL 예외를 얻을 "피연산자 유형 충돌 : 고유 식별자는 INT와 호환되지 않습니다." 은 AR과 같은 (명확성을 위해 단순화)이 같은 선택을 할 시도 :
SELECT ... FROM Rule rules0_ ... WHERE rules0_.HeadingID = ?
어디? Heading.ID의 GUID입니다 (Heading.ID2의 int 여야 함).
HasMany에서 외래 키가 참조하는 열을 설정할 수있는 속성을 찾을 수 없습니다. 이 일을 할 수있는 방법이 있습니까?