实体代码第一个零或一到零或一关系
Posted
技术标签:
【中文标题】实体代码第一个零或一到零或一关系【英文标题】:Entity code first zero or one to zero or one relationship 【发布时间】:2015-09-29 15:10:41 【问题描述】:管理Entity code first 0 or one to zero or one relationship的解决方案是什么?
我想在这两个实体上拥有一个导航属性。
我已经用数据注释进行了测试:
public class class1()
public int Id get;set;
public virtual Class2 Class2 get;set;
public class class2()
public int Id get;set;
public int? Class1Id get;set;
[Required, ForeignKey("Class1Id")]
public Class1 Class1 get;set;
我总是有一条错误消息:“Class1_Class2_Target: : Multiplicity is not valid in Role 'Class2_Class1_Target' in relationship 'Class2_Class1'. 因为从属角色属性不是关键属性,所以从属角色的多重性上限必须是 '*'"。
我找到了具有流畅 API 的示例,但如果可能的话,我想使用数据注释。事实上,对于所有使用 fluent api 的示例,都有一个导航属性,但 int 外键已从类中删除:
class Class1Map : EntityTypeConfiguration<Class1>
public Class1Map()
this.HasKey(c => c.Id);
this.Property(c => c.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
this.HasRequired(c1 => c1.Class2).WithRequiredPrincipal(c2 => c2.Class1);
public class Class1()
public int Id get;set;
public virtual Class2 Class2 get;set;
public class Class2()
public int Id get;set;
/* Missing Class2Id Property */
public virtual Class1 Class1 get;set;
【问题讨论】:
一个非常常见的问题:到目前为止你尝试了什么? 为了帮助您自己的研究,这种类型的关系可以称为 Optional-to-Optional 【参考方案1】:关于这方面的文章有很多,所以我建议你在问这些一般性问题之前先阅读this 文章和谷歌。
【讨论】:
以上是关于实体代码第一个零或一到零或一关系的主要内容,如果未能解决你的问题,请参考以下文章