2017-08-28 78 views
0

我對ASP.NET很新,我正在爲我的小項目創建一個合適的模型。ASP.NET MVC 5/EF6多對多

讓我先解釋一下這個概念: 我想創建一個ASP.NET應用程序來管理我的用戶得到的雜誌和論文。另外我想分配用戶到雜誌。夠簡單。一本雜誌/紙可以有多個用戶(讀者),一個用戶可以有多個他讀的雜誌。這就是爲什麼它對我來說是一個多對多的關係。

我通過一些教程瞭解了代碼優先的多對多關係,據我所知,我需要第三個類,其中包括MagazineId和ReaderId。我想問問你們,如果這是正確的做法:

雜誌類:

[Table("MA_Magazine")] 
public class Magazine 
{ 
    public int MagazineId { get; set; } 
    public string MagazineTitle { get; set; } 
    public string Notice { get; set; } 

    public virtual ICollection<Subscription> Subscriptions { get; set; } 
} 

Reader類:

[Table("MA_Reader")] 
public class Reader 
{ 
    public int ReaderId { get; set; } 
    public string ReaderName { get; set; } 
    public string Department { get; set; } 

    public virtual ICollection<Subscription> Subscriptions { get; set; } 
} 

訂閱類(第三類,引用Magazine和Reader ID):

public class Subscription 
{ 
    public int SubscriptionId { get; set; } 
    public int MagazineId { get; set; } 
    public int ReaderId { get; set; } 
} 

到目前爲止這是否正確?

下一步是創建視圖模型我猜:

public class viewAllModel 
{ 
    public int MagazineId { get; set; } 
    public string MagazineTitle { get; set; } 
    public string Notice { get; set; } 

    public int ReaderId { get; set; } 
    public string ReaderName { get; set; } 
    public string Department { get; set; } 
} 

如果我要列出所有雜誌與讀者用戶和可能實現一個多選列表來將用戶分配到該雜誌,我在哪裏有把IEnumerable?對不起,我對此很困惑,我敢打賭有一個簡單的解決方案,但正如我所說,我對這一切都很新穎,而且我還沒有完全理解Viewmodels的概念。

我會感謝你的每一個評論和tipps。非常感謝。 :d

+0

這與ASP.NET無關,這是實體框架。 –

+0

訂閱可以引用Reader和Magazine,而不僅僅是ReaderId和MagazineId。 –

+0

嗨裏卡多,謝謝你的回答。 MVVM中的ViewModel是不是與asp.net相關的部分?但是,模型本身就是EF。 – daru

回答

0

李嘉圖提到的,你應該在Subscription添加到MagazineReader引用,就像這樣:

public class Subscription 
{ 
    public int SubscriptionId { get; set; } 
    public int MagazineId { get; set; } 
    public int ReaderId { get; set; } 

    [ForeignKey("MagazineId")] 
    public Magazine Magazine { get; set; } 
    [ForeignKey("ReaderId")] 
    public Reader Reader { get; set; } 
} 

爲了給雜誌分配讀者,你可以使用多選或複選框列表 - 有一個頁面,允許您將Magazine分配給Reader。在此頁面上,您將顯示所有Magazine的列表以允許選擇它們,然後爲每個選定項目創建一個Subscription對象。

+0

非常感謝您的回答alxmitch。這幫助了很多:D – daru