C# 需要实体框架:可选的1对1关系,具有两个导航属性
我试图在两个实体之间建立一个必需的:可选的1对1关系,其中两个实体都具有相互引用的导航属性。我只希望C# 需要实体框架:可选的1对1关系,具有两个导航属性,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我试图在两个实体之间建立一个必需的:可选的1对1关系,其中两个实体都具有相互引用的导航属性。我只希望位置对象上有一个外键。照片必须有位置,但位置不需要有照片 这里是两个模型,我没有其他描述关系的流畅代码 public class Photo { [Column("PhotoID")] public long ID { get; set; } [InverseProperty("Photo")] [Required] public virtual Loca
位置
对象上有一个外键。照片
必须有位置
,但位置
不需要有照片
这里是两个模型,我没有其他描述关系的流畅代码
public class Photo
{
[Column("PhotoID")]
public long ID { get; set; }
[InverseProperty("Photo")]
[Required]
public virtual Location Location { get; set; }
}
public class Location
{
[Column("LocationID")]
public long LocationID { get; set; }
public long? PhotoID { get; set; }
[ForeignKey("ID")]
public virtual Photo Photo{ get; set; }
}
它生成的sql将创建一个约束,该约束指向照片对象上错误的外键
FOREIGN KEY FK_dbo.Photo_dbo.Location_PhotoID No Action No Action Enabled Is_For_Replication PhotoID
REFERENCES Relationships.dbo.Location (LocationID)
属性必须位于photoid属性之上
public class Location
{
[Column("LocationID")]
public long LocationID { get; set; }
[ForeignKey("ID")]
public long? PhotoID { get; set; }
public virtual Photo Photo{ get; set; }
}
你的[ForeignKey(“ID”)]放错地方了,需要装饰公共长廊吗?PhotoID{get;set;}我不喜欢“隐式”关系。为了清晰起见,最好将LocationID作为可空的long添加到Photo中,并添加modelBuilder.Entity语句。更正属性的位置后,我得到一个空迁移。我想知道我想做的事是否可能。