【问题标题】:Entity Framework 6+ Code First multiple models in viewEntity Framework 6+ Code First 视图中的多个模型
【发布时间】:2016-10-30 03:01:24
【问题描述】:

型号:

ManufacturersModel.cs

public class Manufacturers
{
    [Key]
    public int ManufacturerID { get; set; }
    [Required]
    [StringLength(100)]
    public string Name { get; set; }
    public int AddressID { get; set; }
    public Address Address { get; set; }
    [EmailAddress]
    [StringLength(150)]
    public string EmailAddress { get; set; }
    [Phone]
    [StringLength(20)]
    public string PhoneNumber { get; set; }
    public ICollection<Brands> Brands { get; set; }
}

BrandsModel.cs

public class Brands
{
    [Key]
    public int BrandID { get; set; }
    [Required]
    [StringLength(100)]
    public string BrandName { get; set; }
    [Required]
    public int ManufacturerID { get; set; }
    public Manufacturers Manufacturers { get; set; }
    public ICollection<Products> Products { get; set; }
}

因此,当尝试为品牌创建“创建”页面时,我想要两个字段:品牌名称和制造商名称。品牌名称将是一个文本框/编辑器,用户可以输入他们想要的内容。由于依赖关系,我希望制造商名称成为 jQuery UI 自动完成下拉列表,以便我知道将满足依赖关系。但是,我不确定我的@model 应该是品牌还是制造商。

这延伸到我可能会处理的其他页面,这些页面可能需要多个模型。我有一个包含我创建的所有模型的上下文,但不确定我是否可以/应该将上下文发送到页面,或者只是模型。例如,我要创建的另一个页面是创建产品页面,该页面将具有制造商名称 jQuery UI 自动完成下拉列表以及品牌名称 jQuery UI 自动完成下拉列表,因为产品与品牌相关品牌与制造商有关。

刚刚进入 Code First 开发,所以需要我能获得的所有帮助和提示。非常感谢。

【问题讨论】:

    标签: c# asp.net-mvc entity-framework-6 code-first


    【解决方案1】:

    这些类看起来像一个数据模型。您可能不想将它们用作页面的实际模型(有时称为视图模型)。您应该考虑专门为您的页面创建一个模型,该模型上具有表示呈现该页面所需的数据的属性。该模型不会存储在数据库中,它只是用于应用程序的模型。

    在您的情况下,对于此页面,我将创建一个模型,该模型具有用于键入的品牌名称的字符串属性,以及用于所选制造商的整数属性。您可能还需要考虑添加一个作为键值对列表的属性,以充当制造商选择的数据源,但如果您想获取,也可以通过控制器的备用操作方法上的 ajax 获取该数据花哨的。

    控制器应该负责创建一个使用来自数据模型的信息填充此视图模型,并且在保存时也会执行相反的操作。

    这似乎更像是一个关于 MVC 而非实体框架的问题。

    【讨论】:

      猜你喜欢
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 2014-09-01
      • 1970-01-01
      相关资源
      最近更新 更多