如何建立两个新实体之间的关系?

时间:2021-04-15 18:49:11

标签: c# entity-framework-core

我有这个模型:

TableA
{
    IDTable;
}

RelationsTableA
{
    IDTableA;
    IDRelatedTableA;
}

然后我有两个实体:

class TableA
{
    long IDTableA;

    virtual ICollection<RelationsTableA> RelationsTableAIDFacturaNavigation;
    virtual ICollection<RelationsTableA> RelationsTableAIDFacturaRelacionadaNavigation;
}

class RelationsTableA
{
    long IDTableA;
    long IDRelatedTableA;

    TablA IDTableANavigation;
    tableA IDRelatedTableANavigation;
}

有时在同一个过程中我需要创建两个表并将它们关联起来,我想要两个关系,当 TableA1 是主表,TableA2 是相关表,反之,当 TableA2 是主表,TableA1 是相关表.所以我这样做:

TableA myTableA = new TableA();
TableA myRelatedTableA = new TableA();

RelationsTableA myRelation1 = new RelationsTableA();
myRelation1.IDTableANavigation = myTableA1;
miRRelation1.IDRelatedTableNavigation = myTableA2;

myTableA1.RelationsTableAIDFacturaNavigation.Add(myRelation1);


RelationsTableA myRelation2 = new RelationsTableA();
myRelation2.IDTableANavigation = myTableA2;
miRRelation2.IDRelatedTableNavigation = myTableA1;

myTableA2.RelationsTableAIDFacturaNavigation.Add(myRelation2);

然后问题是EF Net5检测到有2个关系具有相同的键0,因为两个实体都是新的。但并不考虑导航属性中的实体不同。

我知道EF不保证操作的顺序,所以它似乎在添加TableA实体之前尝试添加RelationsTableA,所以它们仍然有0作为ID。

所以我不知道是否有一些容易解决这个问题的方法,也许是 EF 中我不知道的一些选项。

谢谢。

0 个答案:

没有答案