我有这个模型:
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 中我不知道的一些选项。
谢谢。