需要的实体框架:与两个导航属性的可选1对1关系

时间:2018-05-23 14:26:59

标签: c# sql-server entity-framework

我正在尝试建立一个必需的:两个实体之间的可选1对1关系,其中两个实体都具有相互引用的导航属性。我只想在Location对象上有一个外键。 Photo必须有Location,但Location不需要Photo

以下是这两个模型,我没有其他描述关系的Fluent代码。

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创建一个约束,指向Photo对象上的错误外键。

FOREIGN KEY FK_dbo.Photo_dbo.Location_PhotoID   No Action   No Action   Enabled Is_For_Replication  PhotoID
                        REFERENCES Relationships.dbo.Location (LocationID)

1 个答案:

答案 0 :(得分:0)

属性必须高于photoid属性..

public class Location
{
    [Column("LocationID")]
    public long LocationID { get; set; }

    [ForeignKey("ID")]
    public long? PhotoID { get; set; }

    public virtual Photo Photo{ get; set; }
}