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。
我喜欢将数据注释用于简单的关系。您必须在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;}
}