【问题标题】:Unable to establish One to Many Relations in MVC 6 Views无法在 MVC 6 视图中建立一对多关系
【发布时间】:2016-02-23 07:30:50
【问题描述】:

作为一个学习练习,我试图在供应商和商店之间建立一个简单的一对多关系,其中每个供应商都有多个商店。

使用两个模型类我实现了以下目标:

这就是脚手架给我的商店

为什么我这里没有下拉菜单?

目前未共享任何代码。因为大部分是自动生成的。如果有人希望我为我的模型粘贴代码,请告诉我。

另一个疑问为什么我的表格列按字母顺序排列?如果我没有弄错实体框架 6 用于根据类定义对其进行排序。有没有办法覆盖它?因为视图支架似乎在排序对象方面反映了数据库。

谢谢。

更新:

我在 Shops 类中添加了一个属性 Vendorid。现在我看到下拉列表但没有值。我是否需要深入了解 Fluent API 才能实现这一目标?

   public class Shops
    {
        public int Id { get; set; }
        public String Name { get; set; }
        public int Rank { get; set; }
        public String Address  { get; set; }
        public Boolean Active { get; set; }
        public int VendorId { get; set; }
        public Vendors Vendor { get; set; }
    }

供应商

public class Vendors
{
    public int Id { get; set; }
    public String Name { get; set; }
    public int Rank { get; set; }
    public Boolean Active { get; set; }
    public ICollection<Shops> Shops { get; set; }


}

环境:Visual Studio 2015(已应用最新的 ASP.net 补丁)。 项目模板:Web 应用程序

【问题讨论】:

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


    【解决方案1】:

    这取决于您在 EF 上使用的方法。你确定他们在课堂上有关系吗?如果您首先使用代码,则必须使用 fluent API 手动映射它。在 DbContext 类的 OnModelCreating 方法上,使用类似这样的东西

    modelBuilder.Entity().HasMany(v => v.Shop).WithOptional(s => s.Vendor)。

    如果您使用 Database First,只需在表格图表(或脚本)上创建关系并更新项目中的模型,EF 将为您创建它。

    【讨论】:

    • 如果您使用标准命名约定(Id 或 [Classname]Id),EF 会自动关联您的类,因此 fluent api 不是强制性的。还有一件事,将 virtual 关键字添加到与其他类有关系的属性中,以便 EF 知道它们将成为关系的一部分。 public virtual Vendors Vendor { get;放; } 公共 虚拟 ICollection 商店 { get;放; }
    • 非常感谢。会尝试相同的。
    • 我没有采纳你的建议。
    • 您是否删除并重新创建了控制器/视图脚手架?
    • 没错。请调查此事。
    猜你喜欢
    • 2011-06-19
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 2011-11-18
    相关资源
    最近更新 更多