与ASP.NET MVC一对多和多对多关系和脚手架混淆

与ASP.NET MVC一对多和多对多关系和脚手架混淆,asp.net,asp.net-mvc,entity-framework,entity,repository-pattern,Asp.net,Asp.net Mvc,Entity Framework,Entity,Repository Pattern,正如标题所暗示的,我真的很挣扎。我知道脚手架功能并不完全支持这些开箱即用的关系,但我似乎无法让一个相当常见的场景正常工作。我首先使用代码库模式。一些代码 public class Product { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } public string Sku { get; set; } public str

正如标题所暗示的,我真的很挣扎。我知道脚手架功能并不完全支持这些开箱即用的关系,但我似乎无法让一个相当常见的场景正常工作。我首先使用代码库模式。一些代码

public class Product
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public string Sku { get; set; }
    public string Name { get; set; }
    public decimal PricePerUnit { get; set; }
    public bool Available { get; set; }
    public string Description { get; set; }
    public int QuantityPerCarton { get; set; }
    public int? DisplayOrder { get; set; }

    public ICollection<Category> CategoryList { get; set; }

}

public class Category
{
    public int Id { get; set; }
    public int? ParentCategoryId { get; set; }
    public string Name { get; set; }
    public string UrlName { get; set; }
    public int? DisplayOrder { get; set; }
    public bool Visible { get; set; }

    public virtual ICollection<Product> Products { get; set; }
}
所以我想要两个对象之间的多对多关系。第一个问题。一旦我添加虚拟集合,我就会得到“支持“上下文”上下文的模型自数据库创建以来已更改”。即使在执行迁移等操作之后,也会发生这种情况

第二,我不太明白一旦这样做了,如何将这些列表放到视图中。似乎没有一个完美的资源来解释这一点。有谁能对这一点或端到端的样本提供更具体的说明吗

这应该很简单


谢谢

我在您提到的场景中使用了EF,过去没有出现任何问题。您可以在官方网站上找到一个关于使用EF加载相关资源的非常好的教程。您还可以在那里找到有关第一个问题的更多信息,该问题看起来与迁移有关。

确定解决了它。asp.net网站确实有所帮助。我的错误是,我没有在应用程序的正确层上进行迁移,因此我的多对多表从未被创建。啊

谢谢,我肯定已经用过了,但是我发现它并没有真正涵盖多对多,如果有的话。看他们的例子,我甚至不理解Enrollments类是如何使用的,并且在迁移过程中没有生成任何数据库表。那么,这种关系在哪里?我见过其他例子,在ModelCreating的上下文中对其进行管理,但这些示例似乎很旧,我想知道是否有更好/更新的方法来实现这一点?