2016-05-15 51 views
0

我有三個類:學生,主題和成績。實體框架列表將所有屬性返回到映射模型

public class Grades 
{ 
    [Key] 
    public int Id { get; set; } 
    public Student Student { get; set; } 
    public Subject Subject { get; set; } 
    public int Year { get; set; } 
    public string Grade { get; set; } 
} 

學生班級

public class Student 
    { 
     [Key] 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public string Gender { get; set; } 
     public string Nationality { get; set; } 
    } 

主題類

public class Subject 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Title { get; set; } 
} 

我想回到所有級別但隨着擴大學生和學科的性質,像 我可以訪問 Grade.Name

Grade.Gender

Grade.Nationality

Grade.Year

Grade.Grade

代替 Grade.Student.Name

Grade.Student.Gender

Grade.Student.Nationality

回答

0

假設你有你的學生,學科,成績表之間建立適當的關係。在實體框架中,您可以使用。包括完成工作。

一個基本的例子:

Blog blogs = context.Blogs 
        .Include(b => b.Posts) 
        .ToList(); 

這個,現在你可以直接使用blogs.Posts

參考:https://msdn.microsoft.com/en-in/data/jj574232.aspx

+0

我可以能夠訪問數據,我的意圖是實現帶來財產,如「Grade.Gender」而不是「grade.Student.gender」 –

+0

@PrasadRaja爲什麼會你做吧 ?如果你真的想要這樣的東西,那可以在使用.Include和一些LINQ之後完成。 – Yasser

+0

一些時間列表將具有主數據...在該管理員將定義的屬性,基於我需要得到選定的列... –

1

使用這些表達式來擴大你的數據。請注意,他們不會是Grade級別的,但他們將是您想要的屬性的匿名類。如果您需要將這些項目傳遞給其他方法,則必須創建具有這些屬性的顯式類。否則,您可能會以相同的方法直接訪問它們。像,expandedGrades.First().Name

var expandedGrades = 
    DBContext.Grades.Select(grade => 
    new 
    { 
     Name = grade.Student.Name, 
     Gender = grade.Student.Gender, 
     Nationality = grade.Student.Nationality, 
     Year = grade.Year, 
     Grade = grade.Grade 
    }); 

var expandedGrades = 
       from grade in DBContext.Grades 
       select new 
       { 
        Name = grade.Student.Name, 
        Gender = grade.Student.Gender, 
        Nationality = grade.Student.Nationality, 
        Year = grade.Year, 
        Grade = grade.Grade 
       }; 
+0

我不想用這種方式...屬性應根據對象動態創建 –

+0

程序如何決定要擴展哪些屬性以及它如何處理名稱衝突?你是否需要它用於任何課程或僅僅用於你所說的課程?在最後一種情況下,您可能只是在您創建未映射的屬性成績類 - '公共字符串名稱{獲得{返回Student.Name; }}' –

+0

我已經宣佈了3班,學生,學科,年級(年級與學科和學生有關係)......你可以通過班級識別關係船,請清楚檢查帖子... –

相關問題