【发布时间】:2013-02-16 07:49:11
【问题描述】:
套装有卡片和套装。这是我的模型中的内容,使用 EF Code First:
public class Set
{
// Primitive Properties
[Required]
[Key]
public virtual int SetId { get; set; }
// Navigation Properties
[Required]
public virtual List<Set> Sets { get; set; }
// Navigation Properties
[ForeignKey("ParentSet")]
public int ParentSetId { get; set; }
public virtual Set ParentSet { get; set; }
}
然后对于卡片:
public class Card
{
// Primitive Properties
[Required]
[Key]
public virtual int CardId { get; set; }
// Navigation Properties
[Required]
[ForeignKey("ParentSet")]
public int ParentSetId { get; set; }
public virtual Set ParentSet { get; set; }
}
我正在尝试使用包管理器控制台中的“update-database”重建数据库,这是我得到的错误:
无法确定主端 'App.Core.Set_ParentSet' 关系。多个添加的实体 可能有相同的主键。
知道为什么吗?
【问题讨论】:
-
我没有得到 Set 表中的关系。 uml 模型会是什么样子?为什么一个集合需要一个自身的列表?
-
集合是自引用的……因为一个集合可以有很多集合。像一个 Box 可以有很多 Box,并且可能属于一个 Box。这是否允许?
-
我不确定。我不知道 EF 将如何调和这种关系。我会考虑将 ParentSets 和/或 SubSets 与 PrimarySet 分开定义。
-
虽然,我可以看到阅读像
foreach(Set set in Set.Sets)这样的代码会有多有趣 -
我讨厌对这个问题投反对票,但@RobVious 似乎已将答案标记为答案,但根据他的 cmets,它并不能解决问题。请取消将该答案标记为答案或解释它是如何解决问题的。我真的希望有任何解决方案在这里有效。
标签: c# entity-framework exception-handling ef-code-first