你需要更多的信息,但這裏有幾個選項。
這真的是一對一的關係嗎?一對一的關係在某種程度上是獨一無二的,因爲雙方的關係傾向於共享同一個Id。就像大衛奧斯本說,你很可能想要一對多的關係。但是你希望它是雙向的?即,您可以從引擎向下導航到所有可能具有該引擎的汽車或從汽車上升到特定引擎的汽車。即發動機是克萊斯勒Hemi發動機5.7L,在汽車,Ram Pickup,道奇Durango,道奇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