我现在处于一种奇怪的境地,我有两个实体:
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。
答案 0 :(得分:2)
我喜欢将数据注释用于简单的关系。您必须在Proyect表上指定密钥字段,并在Stage表上指定外键。在Proyect表中,您应该有一个阶段列表,而不是整数,因为您与Stage对象有关。您可以使用virtual
关键字在相关实体上使用lazyloading
。
如果你真的需要一个int类型的列表,包含你的阶段ID,只需使用一个未映射的属性。
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;}
}