C# 首先使用实体框架代码创建0..1到0..1关系

C# 首先使用实体框架代码创建0..1到0..1关系,c#,entity-framework,ef-code-first,C#,Entity Framework,Ef Code First,我想创建0..1到0..1的关系,但是,由于某些原因,在尝试插入数据库时,Entity Framework一直告诉我: “保存不公开其关系的外键属性的实体时出错。EntityEntries属性将返回null,因为无法将单个实体标识为异常源。通过在实体类型中公开外键属性,可以更轻松地在保存时处理异常。有关详细信息,请参阅InnerException。“ 我的部分代码: public class Usable { public int ID { get; set; } //[Fo

我想创建0..1到0..1的关系,但是,由于某些原因,在尝试插入数据库时,Entity Framework一直告诉我:

“保存不公开其关系的外键属性的实体时出错。EntityEntries属性将返回null,因为无法将单个实体标识为异常源。通过在实体类型中公开外键属性,可以更轻松地在保存时处理异常。有关详细信息,请参阅InnerException。“

我的部分代码:

public class Usable {

    public int ID { get; set; }

    //[ForeignKey("ObjectOfInterest")] -> uncommenting this causes:
      //The ForeignKeyAttribute on property 'MentionID' on type
      //'MetaDataModeller.Models.Core.Category' is not valid. The navigation property
      //'ObjectOfInterest' was not found on the dependent type 
      //'MetaDataModeller.Models.Core.Category'. The Name value should be a valid 
      //navigation property name.
    //[ForeignKey("Mention")] -> uncommenting this makes no difference
    public int? MentionID { get; set; }
    public virtual ObjectOfInterest Mention { get; set; }
}

public class ObjectOfInterest {

    public int ID { get; set; }

    public virtual Usable Use { get; set; }
}
DbContext的祖先在模型创建时重写了以下代码:

modelBuilder.Entity<Usable>()
    .HasOptional(usable => usable.Mention)
    .WithOptionalDependent(obj => obj.Use);
modelBuilder.Entity()
.has可选(可用=>可用。提及)
.与选项相关(obj=>obj.Use);
那么-有可能建立0..1到0..1的关系吗?如何?/为什么不?/有没有办法绕过它


谢谢!

奇怪的是,我通过将[DatabaseGenerated(DatabaseGeneratedOption.Identity)]添加到可用的ID属性中,成功地解决了这个问题。不过,不知道为什么会出现这种情况。