我需要在我的域中映射3个域模型之间的关系,其中一个域模型是关系模型的聚合根。
public class Entity1 {
public int Id { get; set; }
}
public class Entity2 {
public int Id { get; set; }
}
public class SuperEntity {
public int Id { get; set; }
// bounded context for relationship classes
}
关系实体应该如下所示
public class Relationship {
public int RelationshipId { get; set; }
public Entity1 Entity1 { get; set; }
public Entity2 Entity2 { get; set; }
}
在此之后,超级实体应该如下所示:
public class SuperEntity {
public int Id { get; set; }
public ICollection<Relationship> Relationships { get; set; }
}
现在,映射这一点的一种可能性是使关系成为一个独特的实体,它与自己的密钥以及关系中的两个实体都是唯一索引。但是,密钥仅用于关键目的&#34;没有任何有意义的价值欲望是这样的关系表:
Table_Relationships
[ SuperEntity_Id // Foreign-key to SuperEntity
PrimaryKey [ Entity1_Id // Foreign-key to Entity1
[ Entity2_Id // Foreign-key to Entity2
表示Table_Relationships的主键是SuperEntity_Id + Entity1_Id + Entity2_Id。
是否可以在EF Code First中映射它?
答案 0 :(得分:-1)
为什么不使用DataAnnotations.KeyAttribute(http://msdn.microsoft.com/library/system.componentmodel.dataannotations.keyattribute%28v=vs.110%29.aspx)?这是在域模型类中定义复杂主键的明确方法。