질문에 조금 더 많은 정보가 필요하지만 몇 가지 옵션이 있습니다.
이것은 정말로 일대일 관계입니까? 일대일 관계는 관계의 양측이 동일한 ID를 공유하는 경향이 있다는 점에서 다소 독창적입니다. 데이비드 오스본 (David Osborne)은 1 대 1 관계를 원한다고 말했다. 하지만 당신은 그것을 양방향으로 원하십니까? 즉, 엔진에서 해당 엔진을 가진 모든 자동차까지 또는 자동차에서 특정 엔진까지 탐색 할 수 있습니다. 즉 엔진은 Chrysler Hemi 엔진 5.7L이며 자동차, 램 픽업, Dodge Durango, Dodge Charger에 있습니다. 그런 다음
당신은 그래서 당신은 당신이 자동차 매핑 목록을 정의하는 데 필요한 엔진 매핑하는 경우이
public class Engine : Entity<int>
{
public Engine()
{
Cars = new List<Car>();
}
public virtual int Id { get; protected set; }
public virtual decimal Displacement { get; set; }
//more properties
public virtual IList<Car> Cars { get; }
public virtual void AddCar(Car car)
{
if (Cars.Contains(car)) return;
Cars.Add(car);
}
public virtual void RemoveCar(Car car)
{
if (!Cars.Contains(car)) return;
Cars.Remove(car);
}
}
public class Car : Entity<int>
{
public virtual int Id { get; set; }
public virtual Engine Engine { get; set; }
}
같은 객체를 매핑 할 수도 있습니다
Bag(x => x.Cars, map =>
{
map.Key(k => k.Column(col => col.Name("EngineId")));
map.Cascade(Cascade.All | Cascade.DeleteOrphans); //optional
},
action => action.OneToMany());
과의 다른면 이와 같은 관계
ManyToOne(x => x.Engine, map =>
{
map.Column("EngineId");
map.NotNullable(true); // if you require the Engine to be in a car
});
자동차에서 en까지의 편도 매핑 만하려는 경우 gine, Cars 목록에 대한 모든 참조를 제거하고 Bag 매핑을 삭제하십시오.
정말 ManyToOne이 아닌 OneToOne입니까? – user1765862
나는 코드 별 매핑을 사용하지 않았고, 나는 단지 링크 된 기사에서 말하는 것과 마찬가지이다. 2012 년 이후로 상황이 바뀔 수도 있습니다 ... –
감사합니다 ....,. ,,, – user1765862