2014-06-16 2 views
0

나는 자극적 인 문제가있다. 두 개의 서로 다른 기둥에 관련된 두 개의 객체가 있습니다. 관계는 동일하다 (모두 한 많은) 및 구조는 다음과 같다두 테이블 간의 다중 관계를 매핑하는 NHibernate

BRAND 테이블

ID
이름
[다른 재료]

CATEGORY 테이블

ID
이름
브랜드 이름 (브랜드 이름으로 검색 브랜드 이름)
DynamicBrandID (FK에서 브랜드로. 내비게이션 이름 DynamicBrands
[기타 물건]

내가 뭘하려고해도, 나는 이것을 NHibernate에서 작동시키지 못한다. HBM 파일은 두 객체 모두에 대해 올바르게 생성 된 것처럼 보이지만 시도 할 때마다 범주에 삽입 할 때마다 오류가 발생합니다.

내 첫 질문 - NHibernate가 처리 할 수없는 것을 시도하고 있습니까? 그것은 레거시 데이터베이스입니다. 그렇다면 더 큰 문제가 있습니다.

둘째로 - 무엇이 잘못 되었나요? 나는의 라인을 따라 오류를 얻을 :

{ "카운트 = 26이 SqlParameterCollection에 대한 잘못된 인덱스 (26)."} - 나는 더 이상 전혀 그렇게 블라인드 조금 비행하고 파고 수 없습니다

귀하의 도움에 감사드립니다

+0

수 매핑 파일 (또는 매핑 클래스)을 사용하여 질문을 보완 해주십시오. –

+0

내가 볼 수있는 것과 관련이없는 모델에는 많은 난감함이 있습니다. - 나는 물건을 혼동하고 싶지 않지만, 정말로보고 싶다면 - https://dl.dropboxusercontent.com/ u/17868024/model.zip –

답변

0

매핑 파일이 부족한 반면, 분명히 문제가 확실합니다 : 두 배로 매핑.

public virtual int BrandID { get; set } 
public virtual Brand Brand { get; set } 

그리고 XML 매핑은 다음과 같습니다 :

<property name="BrandID" column="BrandID" /> 
<many-to-one name="Brand" column="BrandID" class="Brand" /> 

그리고 이것은 SQL 문이 생성 될 때 때문에, 두 가지가 있습니다, 잘못 우리는 하나의 열 두 represenations을 할 때 매우 자주 발생합니다 하나의 열에 삽입 "BrandID". 그러나 해결책이 있습니다.이 매핑 중 하나를 읽기 전용으로 만드십시오.

<property name="BrandID" column="BrandID" insert="false" update="false"/> 
<many-to-one name="Brand" column="BrandID" class="Brand" /> 

그래서, 당신의 유창 확인하고 이런 식으로합니다 : 보통 int (BrandID)는 더 나은 선택 때문에 우리는 여전히, ORM에서 이익이다

References(x => x.Brand, "BrandID"); 
Map(x => x.BrandID, "BrandID") 
    .Not.Insert() 
    .Not.Update() 
    ; 

을 또한 확인 Error is coming while saving data with many to one mapping in nhibernate

+0

위에서 명시 적으로 BrandId를 매핑하는 요점은 무엇입니까? 왜 'Brand.Id'를 통해 액세스하지 않는 것이 좋을까요? –

관련 문제