Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.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# 如何使用属性避免EF4.4设计中的循环引用?_C#_Entity Framework_Ef Code First - Fatal编程技术网

C# 如何使用属性避免EF4.4设计中的循环引用?

C# 如何使用属性避免EF4.4设计中的循环引用?,c#,entity-framework,ef-code-first,C#,Entity Framework,Ef Code First,我有三个表:属性所有者、属性和地址 一个房地产所有者拥有许多房地产 房地产所有者有一个地址 每个属性也有一个地址 以下是实体框架4.4的第一个代码: Table: PropertyOwner [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] [Required] public Guid PropertyOwnerId { get; set; } [Required] [ForeignKey("Address")] public G

我有三个表:属性所有者属性地址

一个房地产所有者拥有许多房地产

房地产所有者有一个地址

每个属性也有一个地址

以下是实体框架4.4的第一个代码:

Table: PropertyOwner

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Required]
public Guid PropertyOwnerId { get; set; }

[Required]
[ForeignKey("Address")]
public Guid AddressId { get; set; }
public virtual Address Address { get; set; }


Table: Property

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Required]
public Guid PropertyId { get; set; }

[Required]
[ForeignKey("PropertyOwner")]
public Guid PropertyOwnerId { get; set; }
public virtual PropertyOwner PropertyOwner { get; set; }

[Required]
[ForeignKey("Address")]
public Guid AddressId { get; set; }
public virtual Address Address { get; set; }


Table: Address

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Required]
public Guid AddressId { get; set; }

[Required]
[StringLength(64)]
public string AddressLine1 { get; set; }
尝试创建此数据库时,出现以下错误:

The referential relationship will result in a cyclical reference that is not allowed. [ Constraint name = FK_dbo.PropertyOwner_dbo.Address_AddressId ]
数据库是否认为物业的地址物业所有者的地址是相同的记录

如何在属性中说明属性需要有自己的地址,而属性所有者也需要有自己的地址


谢谢。

我认为您不需要在类
Property
PropertyOwner
中显式指定外键。EF将仅基于
公共虚拟地址
属性在DB中生成正确的密钥。尝试一下,看看这是否能解决问题。谢谢,但我删除了所有外键的提及,这没有什么区别。这家伙也有类似的情况,看看这个: