簡體   English   中英

ASP.NET MVC 5 / EF6多對多

[英]ASP.NET MVC 5 / EF6 Many-to-Many

我對ASP.NET相當陌生,我正在嘗試為我的小項目創建一個合適的模型。

首先讓我解釋一下這個概念:我想創建一個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; }
}

讀者類別:

[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; }
}

訂閱類 (第三類,同時引用雜志和讀者ID):

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

到目前為止,這正確嗎?

下一步是創建我認為的Viewmodel:

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的概念。

謝謝您的每條評論和小費。 非常感謝。 :D

正如Ricardo所述,您應該在Subscription添加對Magazine and Reader引用,如下所示:

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對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM