我有兩種模型具有雙向0對1關係。EF:我如何從獨立協會轉換爲外鍵協會而不更改架構或丟失數據
A,B. A可以具有一個B. B可以具有一個A.
目前,這些都設置與每個類中的導航性能,不用擔心外鍵屬性(組使用流利語法)
public class A{
[key]
public int Id {get;set;}
public B B {get;set;}}
public class B{
[key]
public int Id {get;set;}
A A {get;set;}
}
modelBuilder.Entity<B>()
.HasOptional(b => b.A)
.WithOptionalPrincipal()
.Map(b => b.MapKey("AId"));
modelBuilder.Entity<A>()
.HasOptional(p => p.B)
.WithOptionalPrincipal()
.Map(p => p.MapKey("BId"));
到目前爲止,事情工作正常,如預期。
我現在想在我的實體中公開這些ID屬性,以便幫助更新斷開的實體關係。
當我剛添加的屬性,我如果我刪除的地圖,然後嘗試使用鍵,它似乎工作得到每error 0019: Each property name in a type must be unique on ID field
「重名」的錯誤,但遷移決定停止FK列,然後用不同的名稱重新添加它們。這將打破我現有的所有數據。
我試圖重寫流利的映射使用HasMany()。HasForeignKey(),但也沒有工作。 (儘管它並不是很多,似乎需要獲得HasForeignKey方法?)
什麼是正確的方式來升級這種關係,同時保持架構相同以保留數據庫中的現有數據?