【问题标题】:ASP NET Core MVC Models / Foreign Key AssignmentASP NET Core MVC 模型/外键分配
【发布时间】:2021-09-10 20:03:30
【问题描述】:

我正在尝试将外键分配给我正在使用的多个模型,但似乎无法找出正确的方法。

对于本示例,所有类都在 Models 命名空间中。

Model-A.cs

public class ModelA {
    [Key]
    [Required]
    [Display(Name = "ID-FROM-A")]
    public int id { get; set; }
    
    public string name { get; set; }
    
    public string connection { get; set; }

    ...
}

Model-B.cs

public class ModelA {
    [Key]
    [Required]
    [Display(Name = "ID-FROM-B")]
    public int id { get; set; }
    
    public string name { get; set; }
    
    [Required]
    [ForeignKey("ID-FROM-A")] <--- ??? 
    public int idFromA { get; set; }

    ...
}

模型-C.cs

public class ModelA {
    [Key]
    [Required]
    [Display(Name = "ID-FROM-C")]
    public int id { get; set; }
    
    public string name { get; set; }
    
    [Required]
    [ForeignKey("ID-FROM-B")] <--- ??? 
    public int idFromB { get; set; }

    ...
}

关于数据库:

MODELA                     MODELB                    MODELC
______                     ______                    ______
id (key)   <- 1 --|        id (key)  <- 1 --|        id (key)
name              |-- M -> model_A_Id       |-- M -> model_B_Id
connection                 ...                       ...
...

ModelA 到 ModelB 是一对多,ModelB 到 ModelC 是一对多。

我知道在 C# 中必须有一种方法可以将这些模型与外键连接起来,但我只是没有在这里连接点。任何帮助表示赞赏。

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-web-api


    【解决方案1】:

    您可以指定导航属性。例如,如果 ModelB 有一个具有一对多关系的 ModelA 的外键,您可以像这样将 ModelB 的集合添加到 Model A:

    public class ModelA {
        [Key]
        [Required]
        [Display(Name = "ID-FROM-A")]
        public int id { get; set; }
        
        public string name { get; set; }
        
        public string connection { get; set; }
    
        public virtual ICollection<ModelB> ModelBs { get; set; }
    
        ...
    }
    

    对它使用'virtual'意味着它可以支持延迟加载和更有效的更改跟踪What effect(s) can the virtual keyword have in Entity Framework 4.1 POCO Code First?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-23
      • 2019-05-09
      • 2019-11-04
      相关资源
      最近更新 更多