2014-03-12 72 views
0

我有以下的遺留代碼片段我不能改變遺留代碼:代碼首先一對一或零關係

public class EntityA 
{ 
    int SeqId { get; set; } //Not part of the key 

    [Association("EntityB", "Seq_ID", "Seq_ID")] 
    public EntityB EntityB { get; set; } 
} 

public class EntityB 
{ 
    [Key] 
    int SeqId { get; set; } 
} 

數據庫是通過SQL創建並且不與實體框架。沒有外鍵 鍵和關係處理爲一對一/零。

現在,我們必須首先使用模型代碼,並且實體框架添加外鍵關係。 由於我無法更改模型,但我可以覆蓋OnModelCreating事件,我想要 重寫關係從必需到可選。我試圖添加

modelBuilder.Entity<EntityA>().Property(i => i.EntityB).IsOptional(); 

modelBuilder.Entity<EntityA>().HasOptional(i => i.EntityB).WithOptionalDependent() 

但在這兩種情況下,實體框架抱怨。

+0

什麼是例外?數據庫中的「Seq_ID」是否可以空? – haim770

+0

我得到的例外: _多重性與角色'EntityA_EntityB_Target'中關係'EntityA_EntityB'中的參照約束衝突。 因爲從屬角色中的所有屬性都是不可空的,所以主體角色的多重性必須爲'1'._ Seq_ID不爲空,並且可悲的是我無法更改它。 – StefanG

回答

0

我們採用以下解決方法:

創建模型後,直接刪除的外鍵。不美觀但有效。