我是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
答案 0 :(得分:0)
正如里卡多所提到的,你应该在Magazine
中添加对Reader
和Subscription
的引用,如下所示:
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
对象。