【发布时间】:2016-10-19 05:16:23
【问题描述】:
我有一个表,我希望有两个自外键作为下一个和上一个。
如下图:
public class BoxDefinition : ISiblingable
{
public int BoxDefinitionId { get; set; }
public string Name { get; set; }
public byte[] Photo { get; set; }
public bool Active { get; set; }
[ForeignKey("Next")]
public int? NextId { get; set; }
[ForeignKey("Previous")]
public int? PreviousId { get; set; }
public BoxDefinition Next { get; set; }
public BoxDefinition Previous { get; set; }
//public virtual ICollection<BoxDefinition> NextSiblings { get; set; }
//public virtual ICollection<BoxDefinition> PreviousSiblings { get; set; }
public static BoxDefinition GetById(int id, IContext context)
{
return context.BoxDefinitions.SingleOrDefault(b => b.BoxDefinitionId == id);
}
}
当我取消注释这两个集合时,一切正常,但在这个实体中我确实需要很多,因为每个实例只有一个 next 和 previous 或 null。
这是错误:
BoxDefinition_Previous_Target: : 多重性在角色中无效 关系中的“BoxDefinition_Previous_Target” 'BoxDefinition_Previous'。因为从属角色属性是 不是关键属性,多重性的上限 从属角色必须是“*”。
Entity Framework 可能认为应该有 Collection,因为可能有很多引用,但我知道不会。
有什么想法吗?
【问题讨论】:
标签: c# entity-framework