C# 实体框架6+;首先对视图中的多个模型进行编码

C# 实体框架6+;首先对视图中的多个模型进行编码,c#,asp.net-mvc,entity-framework-6,code-first,C#,Asp.net Mvc,Entity Framework 6,Code First,型号: 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

型号:

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; }
}
公共类制造商
{
[关键]
public int-ManufacturerID{get;set;}
[必需]
[长度(100)]
公共字符串名称{get;set;}
public int AddressID{get;set;}
公共广播地址{get;set;}
[电邮地址]
[长度(150)]
公共字符串电子邮件地址{get;set;}
[电话]
[行政长官(20)]
公共字符串PhoneNumber{get;set;}
公共ICollection品牌{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; }
}
大众品牌
{
[关键]
public int BrandID{get;set;}
[必需]
[长度(100)]
公共字符串BrandName{get;set;}
[必需]
public int-ManufacturerID{get;set;}
公共制造商制造商{get;set;}
公共ICollection产品{get;set;}
}
因此,当尝试为品牌创建“创建”页面时,我希望有两个字段:品牌名称和制造商名称。品牌名称将是一个文本框/编辑器,用户可以输入他们想要的内容。由于依赖关系,我希望制造商名称是jQuery UI自动完成下拉列表,这样我就知道依赖关系将得到满足。然而,我不确定我的@model是品牌还是制造商

这将扩展到我可能要处理的其他页面,这些页面可能需要多个模型。我有一个包含我创建的所有模型的上下文,但不确定我是否可以/应该将上下文发送到页面,或者只发送模型。作为一个例子,我想创建的另一个页面是创建产品页面,该页面将有一个制造商名称jQuery UI autocomplete下拉列表和一个品牌名称jQuery UI autocomplete下拉列表,因为产品与品牌的关系与品牌与制造商的关系相同


刚刚开始代码优先开发,所以我需要所有能得到的帮助和提示。非常感谢。

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

在您的情况下,对于这个页面,我将创建一个模型,该模型对键入的品牌名称有一个string属性,对它选择的制造商有一个integer属性。您还可以考虑添加一个键值列表的属性,以作为制造商选择的数据源,不过如果您想获得幻想,您还可以通过AJAX在控制器的替代动作方法中获得该数据。 控制器应负责创建一个使用数据模型中的信息填充此视图模型的视图,并在保存时执行相反的操作

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