假设我有一个名为" 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.不要忘记使用实体。