C# - 将外键关系转移到新ID



假设我有一个名为" ab"的DB表,其中包含2个构成主要键的Int列:A和B。它当前包含这2行(在现实生活中,它将有很多更多行):

(a,b)

(1,1),(1,2),(2,1),(3,2)

使用EntityFramework,我想"合并"包含2个b值2的行中包含1个B值的行1。所有包含B值2的行应在合并操作后转移2的行。我希望结果看起来像:

(a,b)

(1,1),(2,1),(3,1)

我将如何使用EntityFramework完成此操作?到目前为止,我已经考虑过这样做(伪代码):

foreach (ABRow in entities.AB.Where(ab => ab.B == 2)
{
    if (!entities.AB.Any(ab => ab.A == ABRow.A && ab.B == 1)
    {
        ABRow.B = 1; // Modify row to point to ID 1 instead of 2.
    }
    else
    {
        entities.Remove(ABRow); // Delete since it would cause a duplicate row to be created in the DB.
    }
}

似乎这效率低下,因为您将在DB中执行几个SQL查询。

我没有得到你想要的东西,但我有一些建议:

1.如果您问的话,您可以在SQL中使用SQL中的约束。

2.不要忘记使用实体。

最新更新