다음과 같은 Nhibernate 문제로 하루 종일 책상에서 머리를 숙이고 있습니다.Nhibernate 자식 개체 삽입 오류로 일대일 매핑 문제가 발생했습니다.
각 은행 계좌에는 관련된 요금이 하나뿐입니다. 은행 계좌 테이블의 기본 키인 BankAccountID는 외래 키이고 AccountRate 테이블의 기본 키입니다.
public class BankAccount
{
public virtual int BankAccountId { get; set; }
public virtual string AccountName { get; set;}
public virtual AccountRate AccountRate {get;set;}
}
public class AccountRate
{
public virtual int BankAccountId { get; set; }
public virtual decimal Rate1 { get; set; }
public virtual decimal Rate2 { get; set; }
}
내가는 BankAccount에 대해 다음 HBM 매핑이 있습니다
<class name="BankAccount" table="BankAccount">
<id name ="BankAccountId" column="BankAccountId">
<generator class="foreign">
<param name="property">
AccountRate
</param>
</generator>
</id>
<property name ="AccountName" column="AccountName" />
<one-to-one name="AccountRate" class="AccountRate" constrained="true" cascade="save-update"/>
</class>
과 AccountRate에 대해 다음 :
<class name="AccountRate" table="AccountRate">
<id name ="BankAccountId" column="BankAccountId">
<generator class="native" />
</id>
<property name ="Rate1" column="Rate1" />
<property name ="Rate2" column="Rate2" />
</class>
기존 BankAccount가 객체가 문제없이 데이터베이스에서 읽을 수 있습니다. 그러나 새 BankAccount가 만들어지면 insert 문이 실패합니다.
Cannot insert the value NULL into column 'BankAccountId'
하위 개체 인 AccountRate가 먼저 생성 된 것으로 보입니다. 부모로부터 식별자를 아직받지 못하기 때문에 삽입이 실패합니다.
BankAccount의 AccountRate 속성이 다음과 같은 컬렉션을 사용할 수 있다고 말하는 것이 맞다고 생각하십니까?
Inverse=True
부모를 먼저 삽입해야합니다.
아무도 도와 줄 수 있습니까? 난 정말 컬렉션을 사용하고 싶지 않아, 단 하나의 테이블 사이에 일대일 관계가 있습니다.
감사
바울이 주위
예상대로 작동하는지 확인하십시오. – Darius