ID的实体框架映射列表

本文关键字:映射 列表 框架 实体 ID | 更新日期: 2023-09-27 18:22:34

我现在的处境很奇怪,我有两个实体:

public class Proyect
{
    int id;
    List<int> stages;
}
public class Stage
{
    //PK, not FK to proyect
    int id;
}

我知道这不是建立这种关系模型的最佳方式(n->1)但它是这样做的,我们不能改变它。

有人知道吗,我该如何关联这些实体(表示法或覆盖onModelCreation)?

我们使用的是c#、ET4、VS2012、WS8。

ID的实体框架映射列表

我喜欢将数据注释用于简单的关系。您必须在Proyect表中指定密钥字段,在Stage表中指定外键。在Proyect表中,您应该有一个阶段列表,而不是int,因为您与阶段对象有关。您可以使用virtual关键字在相关实体上使用lazyloading

如果您真的需要一个包含阶段ID的int类型列表,只需使用一个未映射的属性即可。

public class Proyect{
    [Key]
    public int id { get; set;}
    public virtual List<Stage> stages { get; set;}
    [NotMapped]
    public virtual List<int> stageIds {
        get {
            return stages == null ? null : stages.Select(t => t.id).ToList();
        }
    }
}
public class Stage{
    public int id { get; set;}
    [ForeignKey("id")]
    public virtual Proyect Proyect { get; set;}
}