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

时间:2014-02-24 17:01:53

标签: 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 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; }
}

所以我想要两个对象之间的多对多关系。第一个问题。一旦我添加虚拟集合,我就会得到'支持'上下文的模型'上下文自创建数据库以来已经改变了'。即使在我执行迁移等后也会发生这种情况。

其次我不太明白(一旦这个工作),如何将这些列表放入视图中。似乎没有一个完美的首选资源来解释这一点。任何人都可以对这个或端到端的样本有更具体的了解吗?

这应该很简单!!

由于

2 个答案:

答案 0 :(得分:0)

我在过去没有问题的情况下使用了EF。您可以在官方ASP.NET website中找到关于使用EF加载相关资源的非常好的教程。您可能还会在第一个与迁移相关的问题上找到更多信息。

答案 1 :(得分:0)

好的解决了。 asp.net网站确实提供了帮助。我的错误是我没有在应用程序的正确层上进行迁移,因此我的多对多表从未被创建过。卫生署!