繁体   English   中英

MVC如何将一个模型连接到另一个模型

[英]MVC how to connector one model to two others

我需要一些帮助,以了解如何创建与其他两个模型链接的模型。

我有三种模式:

public class RequiredPower
{
  public int RequiredPowerID { get; set; }

  [Required(ErrorMessage = "This field cannot be empty!")]
  [MaxLength(25, ErrorMessage = "This name is too long. Max. 35 characters allowed!")]
  [Display(Name = "Name:")]

  public string Name { get; set; }

  public int Position { get; set; }
}

public class RequiredFuses
{
  public int RequiredFusesID { get; set; }

  [Required(ErrorMessage ="This field cannot be empty!")]
  [MaxLength(25,ErrorMessage ="This name is too long. Max. 25 characters allowed!")]
  [Display(Name="Fuse:")]
  public string Name { get; set; }
}

public class PowerConnector
{
  public int PowerConnectorID { get; set; }

  [Required(ErrorMessage = "This field is required!")]
  [Display(Name = "Name:")]
  [StringLength(45, ErrorMessage = "The name is too long, only 45 characters allowed!")]
  public string Name { get; set; }

  [StringLength(150, ErrorMessage = "The name is too long, only 150 characters allowed!")]
  [Display(Name = "Image file name:")]
  [DataType(DataType.MultilineText)]
  public string ImageName { get; set; }
}

这个想法是,一个RequiredPower可以具有多个PowerConnector和多个RequiredFuse。

在“视图”上,我有一个文本框可输入RequiredPower的名称,连接器的选择列表和保险丝的选择列表。 选择列表是多个复选框列表,并提供一串选择的ID,例如“ 1,2,3,”。

没有如何在数据库中获取它? 我可以添加新的requiredPower,获取ID,然后在其他两个表中以RequiredPowerID作为关系来创建记录,但是使用EntityFramework难道不是吗?

我在这里想念什么?

在EF中,您可以使用虚拟集合定义一对多关系(您可以在此处查看更多信息 ):

public class RequiredPower
{
    public int RequiredPowerID { get; set; }

    [Required(ErrorMessage = "This field cannot be empty!")]
    [MaxLength(25, ErrorMessage = "This name is too long. Max. 35 characters allowed!")]
    [Display(Name = "Name:")]

    public string Name { get; set; }

    public int Position { get; set; }

    public virtual ICollection<PowerConnector> PowerConnectors { get; set; }

    public virtual ICollection<RequiredFuses> RequiredFuses { get; set; }
}

这样,您可以将PowerConnectors / RequiredFuses添加到RequiredPower并立即保存:

var somePower = new RequiredPower() {
    Name = 'somePower'   
};
var oneConnector = new PowerConnector() {
    Name = 'oneConnector'   
};

somePower.PowerConnectors.add(oneConnector);
somePower.SaveChanges(); // << this will create somePower and oneConnector in your database

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM