C# 如何用实体框架求解循环引用

C# 如何用实体框架求解循环引用,c#,asp.net-mvc,entity-framework,postgresql,C#,Asp.net Mvc,Entity Framework,Postgresql,我不是“MacGyver”,所以我需要如何在EF中使用循环引用工作来帮助弗兰肯斯坦的表格。(facepalm)这是postgresql上的一个旧数据库,我需要它在一个新的web系统上工作(!!!)。所以,我想我需要一个偷工减料的家伙:) 表A int-id-PK varchar描述 varchar其他_字段 ... int idTableB FK(参考表B键) 表B int-id-PK varchar fieldX 双重恶魔 ... int idTableA FK(参考表A键) 如果我尝试

我不是“MacGyver”,所以我需要如何在EF中使用循环引用工作来帮助弗兰肯斯坦的表格。(facepalm)这是postgresql上的一个旧数据库,我需要它在一个新的web系统上工作(!!!)。所以,我想我需要一个偷工减料的家伙:)

表A int-id-PK
varchar描述
varchar其他_字段
...
int idTableB FK(参考表B键)

表B int-id-PK
varchar fieldX
双重恶魔
...
int idTableA FK(参考表A键)


如果我尝试使用具有ForeignKey属性的模型,则会在附加的图像上获得错误

具有这些错误的模型如下所示:

模型 模型a的对象是指模型B的对象,它反过来引用模型a的另一个对象,反过来又引用任何模型B对象,可能与它的引用相同。。。天哪

对!!我先处理数据库。这是一个简单但非常接近现实的例子。
这里有魔术师帮我解决吗?谢谢各位。

只需在您的数据库上下文中设置此选项


db.Configuration.ProxyCreationEnabled=false

在上下文的构造函数中,验证此行:

Database.AutoTransactionsEnabled=false


如果该行处于活动状态,请评论并重试。

Thank you@VsevolodGoloviznin可能重复,我在搜索中未找到此主题。抱歉,此技术无法解决问题:(“发生引用完整性约束冲突:当从属对象未更改时,作为引用完整性约束一部分的主键属性无法更改,除非将其设置为关联的主对象。必须跟踪主对象,并且不将其标记为删除。”。“谢谢@Zakos,但这不是主题。。。
[table("table_a")]
public class ModelA {

    [Key, Column("id")]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set;]

    [Column("idTableB")]
    public int IdTableB { get; set; }
    [ForeignKey("IdTableB")]
    public virtual ModelB Model_B { get; set; }

}

[table("table_b")]
public class ModelB {

    [Key, Column("id")]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set;]

    [Column("idTableA")]
    public int IdTableA { get; set; }
    [ForeignKey("IdTableA")]
    public virtual ModelA Model_A { get; set; }

}