C# 首先使用实体框架代码创建0..1到0..1关系
我想创建0..1到0..1的关系,但是,由于某些原因,在尝试插入数据库时,Entity Framework一直告诉我: “保存不公开其关系的外键属性的实体时出错。EntityEntries属性将返回null,因为无法将单个实体标识为异常源。通过在实体类型中公开外键属性,可以更轻松地在保存时处理异常。有关详细信息,请参阅InnerException。“ 我的部分代码: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
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属性中,成功地解决了这个问题。不过,不知道为什么会出现这种情况。