C# 如何使用属性避免EF4.4设计中的循环引用?
我有三个表:属性所有者、属性和地址 一个房地产所有者拥有许多房地产 房地产所有者有一个地址 每个属性也有一个地址 以下是实体框架4.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
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中生成正确的密钥。尝试一下,看看这是否能解决问题。谢谢,但我删除了所有外键的提及,这没有什么区别。这家伙也有类似的情况,看看这个: