Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要实体框架:可选的1对1关系,具有两个导航属性_C#_Sql Server_Entity Framework - Fatal编程技术网

C# 需要实体框架:可选的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

我试图在两个实体之间建立一个必需的:可选的1对1关系,其中两个实体都具有相互引用的导航属性。我只希望
位置
对象上有一个外键。
照片
必须有
位置
,但
位置
不需要有
照片

这里是两个模型,我没有其他描述关系的流畅代码

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语句。更正属性的位置后,我得到一个空迁移。我想知道我想做的事是否可能。