【问题标题】:Confusion with ASP.NET MVC one-to-many and many-to-many relationships and scaffolding与 ASP.NET MVC 一对多和多对多关系和脚手架混淆
【发布时间】:2014-02-24 17:01:53
【问题描述】:

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

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

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

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

这应该很简单!!

谢谢

【问题讨论】:

    标签: asp.net asp.net-mvc entity-framework entity repository-pattern


    【解决方案1】:

    我在过去没有问题的情况下使用过 EF。你可以在官方ASP.NET website找到一个很好的关于用EF加载相关资源的教程。您还可以在此处找到有关您的第一个问题的更多信息,该问题看起来与迁移相关。

    【讨论】:

    • 谢谢,我确实已经使用过这个,但发现它并没有真正涵盖多对多,如果有的话。看看他们的例子,我什至不明白 Enrollments 类是如何使用的,并且在迁移过程中没有生成数据库表。那么这段关系在哪里举行呢?我已经看到了其他在 onModelCreating 上下文中进行管理的示例,但这些示例看起来很旧,想知道是否有更好/更新的方法来实现这一点?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-08
      • 2011-08-29
      相关资源
      最近更新 更多