【问题标题】:How to solve circular references with Entity Framework如何使用实体框架解决循环引用
【发布时间】:2019-10-17 12:38:24
【问题描述】:

我不是“MacGyver”,所以我需要帮助,了解如何使用 EF 中的循环引用工作来处理科学怪人的表格。 (facepalm) 这是 postgresql 上的一个旧数据库,我需要它在一个新的 web 系统上工作 (!!!)。所以,我想我在这里需要一个杰瑞操纵:)

表 A

int id PK;
varchar 描述;
varchar other_field
...
int idTableB FK(参考表 B 键)

表 B

int id PK
varchar 字段X
双重恶魔
...
int idTableA FK(参考表 A 键)


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

出现这些错误的模型如下:

型号

[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; }

}

嗯,ModelA 的一个对象引用了 ModelB 的一个对象,然后又引用了 Model A 的另一个对象,with 又引用了任何 ModelB 对象,可能和引用它一样... OMG!

是的!我正在使用 DatabaseFirst。这是一个简单但非常接近现实的例子。 有哪位魔术师帮我解决这个问题吗?谢谢大家。

【问题讨论】:

标签: c# asp.net-mvc entity-framework postgresql


【解决方案1】:

只需在您的 dbcontext 上设置它

db.Configuration.ProxyCreationEnabled = false;

【讨论】:

    【解决方案2】:

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

    Database.AutoTransactionsEnabled = false;

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

    【讨论】:

      猜你喜欢
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-19
      • 2011-05-25
      相关资源
      最近更新 更多