누군가가 레거시 데이터베이스를 매핑하는 데 도움이되기를 바랍니다. 여기에 설명 된 문제는 다른 사람들을 괴롭 히지 만 아직 웹에서 좋은 해결책을 찾을 수 없습니다.NHibernate 레거시 데이터베이스 매핑이 불가능합니까?
면책 조항 : 이것은 레거시 DB입니다. 복합 키 키를 제어 할 수 없습니다. 그들은 술을 마시고 아무리 바꿔도 변하지 않을 것입니다. suck. 대리 키를 추가 할 수 없습니다. 옵션이 아니기 때문에 이들 중 하나를 제안하지 마십시오.
두 테이블 모두 합성 키가 있습니다. 하나의 테이블의 키 중 하나가 다른 테이블에서 컬렉션을 가져 오기 위해 키의 일부로 사용됩니다. 즉, 키가 테이블간에 완전히 일치하지 않습니다. ClassB는 가능한 경우이 매핑의 목적으로 의 속성을 추가하는 것을 피하기 위해 모든 곳에서 사용됩니다.
public class ClassA
{
//[PK]
public string SsoUid;
//[PK]
public string PolicyNumber;
public IList<ClassB> Others;
//more properties....
}
public class ClassB
{
//[PK]
public string PolicyNumber;
//[PK]
public string PolicyDateTime;
//more properties
}
나는를 ClassA의 인스턴스를 얻을 PolicyNumber 일치하는 모든 ClassB가 행을 싶어. 나는 일대 다 (many to many) 일 수도 있다는 것을 깨닫고 있습니다. 일대 다 (many to many) 일 수도 있습니다.
연관 클래스를 사용해 보았지만 제대로 작동하는 경우 까지 볼 수 없었습니다. 나는이보다 복잡한 매핑을 처음 사용하고 있으며 조언을 구하는 경우 을보고 있습니다. 나는 거의 모든 아이디어에 열려 있습니다.
감사합니다,
복합 키에 관한 내 게시물을 얼마나 열심히 시도하든 관계없이 사람들이 DB를 변경하라는 제안을 끊을 수는 없습니다. 열쇠를 추가 할 수 없다는 말은하지 않았지만, DB는 변경할 수 없습니다. 나는 오랫동안 그 싸움을 해왔다. 면책 조항 : 이것은 기존 DB입니다. 나는 복합 키를 제어 할 수 없다. 그들은 빨고, 당신이 그들이 빨다 고 말해도별로 바꿀 수 없다. 대리 키를 추가 할 수 없습니다. –
나는 "나는 거의 모든 아이디어에 개방적"이지만 "대리 키를 추가 할 수 없다"는 것을 알았다. 편집을 추가 할 생각이 하나 더 있습니다. –
댓글 뒤에 사로 게이트 키에 관한 부분을 실제로 추가했습니다. 나는 그 부분을 나갔다는 것을 압니다. 아이디어를 가져 주셔서 감사합니다. –