2015-04-06 10 views
0

我是Visual Studio的新手,所以開始學習它,我首先下載了一個示例,可在https://code.msdn.microsoft.com/ADPNET-Entity-Framework-2d1160cb並開始解決它。由於我對VB6和SQL有相當好的瞭解,因此我不需要太多時間來理解該示例所基於的整個模式。如果微軟給出了詳細的解釋或者對樣本進行了解,那麼理解這些基礎知識就會容易得多。不過,我設法解決了這個問題,並使用Entity Framework和MVVM在wpf中構建了一個小型桌面應用程序。但是有一點我已經完全陷入了無法找到出路的地步。問題如下:如何擁有一個本身持有外鍵引用的列的多個實例?

我有兩個表。 1名倡導者和2名締約方。表格倡導者將包含倡導者的名字並且將具有主鍵。同樣,締約方會有名字和他們各自的主鍵。

然後我有另外兩個表1. Case和2 CaseDetail。表格案例僅包含三列:1. CaseId 2. CaseNo和3.年份。表格CaseDetail將CaseDetailId作爲主鍵,CaseId作爲外鍵。現在我需要的是一個特定的案例可以有多個倡導者和多個請願者。因此表格CaseDetail將有兩列將advocateId和PartyId作爲外鍵。

如果你看看上面提到的示例,你不會找到如何處理這種情況。當我遵循樣本的模式時,我會遇到設計時間和運行時錯誤。

無論如何,經過多次試驗後,我設法設置了EF權限,但我懷疑它是否會用於任何目的,因爲我需要擁有多個上訪者和倡導者實例。

這裏是鏈接到我的EDMX:

https://www.dropbox.com/s/rkarzod1lezdnqs/EDMX.png?dl=0

從圖像中可以看出,我有四個不同的外鍵fldPetitioner,fldRespondent,fldAdvocate和fldSrAdvocate對此我也有導航屬性回溯它們的多重性0或1.因此,在這種情況下,我可以在這些列上有多個實例嗎?

因此,請在使用實體框架和MVVM開發WPF應用程序時,在上述場景中建議採用何種策略。

回答

0

我想這聽起來像是你想要使用一對一的關係,應該有一對一的關係。仔細查看鏈接MS樣本中Department與Employee之間的關係。這導致「1部門對許多員工」。這使DepartmentId不會在Employee表中輸入,而不是,這是我認爲您目前擁有的。您的問題中的類似因素將是'1許多倡導者的CaseDetail'。

public class CaseDetail 
{ 
    //CaseDetail ID number 
    public int CaseDetailId { get; set; } 

    //... 
    //Any other properties go here 
    //... 

    //Navigation properties 
    public ICollection<Advocate> Advocates { get; set; } 

    /* Other collections would be executed similarly: 
    * 
    * public ICollection<Party> Petitioners { get; set; } 
    * public ICollection<Party> Respondents { get; set; } 
    */ 
} 

public class Advocate 
{ 
    //Advocate ID number 
    public int AdvocateId { get; set; } 

    //... 
    //Any other properties go here 
    //... 

    //Navigation properties 
    public int CaseDetailId { get; set; } 
    public CaseDetail CaseDetail { get; set; } 
} 

public class AdvocateConfiguration : EntityTypeConfiguration<Advocate> 
{ 
    public AdvocateConfiguration() 
    { 
     HasRequired(a => a.CaseDetail) 
       .WithMany(cd => cd.Advocates); 
    } 
} 
相關問題