2013-07-27 69 views
2

如果您需要從各種實體(模型)創建一個視圖,最好是創建一個單獨的類作爲包含您需要的特定屬性的ViewModel,還是最好創建具有​​特定屬性的另一個實體並將該實體關聯起來與ORM設計器中的其他實體?One View for multiple models?

+0

我總是發現了一個1:1的視圖來模型比率效果最好(然後您可以使用類似AutoMapper的東西來使鏈接更容易)。 –

+0

這可能是個人喜好,我會將2個實體模型添加到視圖模型。我不會製造額外的實體,因爲它會混亂db設計 – James

+0

我會使用視圖模型。 –

回答

1

您可以將任意數量的模型合併到一個模型中,方法是將它們聲明爲主模型的屬性。假設你有以下型號:

public class Student 
{ 
    public int StudentID { get; set; } 
    public string StudentName { get; set; } 
    public int SchoolID { get; set; } 

    public virtual School StudentSchool { get; set; } 
} 

public class School 
{ 
    public School() 
    { 
     this.Students = new HashSet<Student>();    
    } 

    public int SchoolID { get; set; } 
    public string ASchoolName { get; set; } 

    public virtual ICollection<Student> Students { get; set; }   
} 

如果只設置Student類作爲您的視圖模型,你可以擷取您的學生的School在這種情況下,你不需要做任何事情。

但是我們假設你還需要所有學校和所有學生在視圖作爲你的視圖模型。要做到這一點,創建另一個類,並添加上述類作爲它的屬性:

public class MyModel 
{ 
    List<Student> MyStudents { get; set; } 
    List<School> MySchools { get; set; } 
} 

您可以創建你需要通過這種方法的任何複雜的模型......