부모 테이블과 하위 테이블이 있고 엔티티가 일대 다 관계를 사용하여 만들어지고 매핑됩니다. 한면에서 여러면에서 Inverse()를 사용할 때 자식 테이블의 외래 키 값이 null로 삽입됩니다. Inverse()
하나의 새로운 기록을 문제없이 삽입 및 외래 키가 문제없이 삽입되어 많은 제거되지만Inverse를 사용할 때 Fluent nhibernate 일대 다 자영표 테이블의 외래 키가 null입니다.
public class TableA
{
public virtual long ID { get; set; }
public virtual string Name { get; set; }
public virtual IList<TableB> TableB { get; set; }
}
public class TableB
{
public virtual long ID { get; set; }
public virtual string Name { get; set; }
public virtual TableA TableA { get; set; }
}
public class TableAMap : ClassMap<TableA>
{
public TableAMap()
{
Id(x=>x.ID);
Map(x=>x.Name).Column("Name");
HasMany(x=>x.TableB)
.KeyColumn("TableA_ID")
.Inverse()
.Cascase.All()
.Not.LazyLoad();
}
}
public class TableBMap : ClassMap<TableB>
{
public TableBMap()
{
Id(x=>x.ID);
Map(x=>x.Name).Column("Name");
References(x=>x.TableA).Column("TableA_ID").Not.LazyLoad();
}
}
주 나는 기존 레코드의 외래 키는 레코드를 업데이트 할 때 null로 대체되었습니다.
비슷한 질문을 들었지만 도움이되지 않도록 도와주세요.
Fluent NHibernate one-to-many relationship setting foreign key to null
당신은 당신의 진짜 매핑을 게시해야해야한다. 당신의'HasMany (x => x.TableB) .KeyColumn ("TableA_ID"). Inverse(). Cascase.All(). Not.LazyLoad();'가''와 함께 작동하지 않는 것 같습니다. –
Origin
예. 나는 HasMany (x => x.TableB) .KeyColumn ("TableA_ID")으로 수정했다. Inverse() .Cascase.All(). NotLazyLoad(); ' –
Desmond
이 예제는 해독하기 어렵다. . 다시 말하지만, 실제 코드 (또는 하위 세트)와 현재 작업중인 스키마를 게시해야한다고 생각합니다. – Origin