EF5:与FOREIGN KEY约束冲突

时间:2017-08-18 19:29:49

标签: c# sql-server entity-framework

我是使用实体框架的新手。我使用EF5插入新数据。

我遇到了可怕的错误:

The INSERT statement conflicted with the FOREIGN KEY constraint "FK_POSTransactionsKitMemberTaxRaw_POSTransactionsKitMemberSaleReturnRaw_KitMemberSaleReturnRowId".

我明白这意味着我在[POSTransactionsKitMemberSaleReturnRaw]中没有排  使用与表[POSTransactionsKitMemberTaxRaw]的插入匹配的主键。

我希望EF为我生成主键,并希望自动生成缺失的行。这是代码失败的代码:

foreach (POSTransactionsKitMemberSaleReturnRaw posTransactionsKitMemberSaleReturnRaw in posTransactionsKitMemberRaw.POSTransactionsKitMemberSaleReturnRaws)
{
    ++KitMemberSaleReturnRowId;

    // set temporary keys
    posTransactionsKitMemberSaleReturnRaw.KitMemberSaleReturnRowId = KitMemberSaleReturnRowId;
    posTransactionsKitMemberSaleReturnRaw.KitMemberRowId = KitMemberRowId;
    repository.AddPOSTransactionsKitMemberSaleReturnRaw(posTransactionsKitMemberSaleReturnRaw);

    foreach (POSTransactionsKitMemberTaxRaw posTransactionsKitMemberTaxRaw in posTransactionsKitMemberSaleReturnRaw.POSTransactionsKitMemberTaxRaws)
    {
        // set temporary keys
        posTransactionsKitMemberTaxRaw.KitMemberTaxRowId = ++KitMemberTaxRowId;
        posTransactionsKitMemberTaxRaw.KitMemberSaleReturnRowId = KitMemberSaleReturnRowId;
        posTransactionsKitMemberTaxRaw.KitMemberKitMemberSaleReturnRowId = null;
        repository.AddPOSTransactionsKitMemberTaxRaw(posTransactionsKitMemberTaxRaw);
    }
}

我已经验证在运行时POCO对象中有临时主键值。活动的sql跟踪显示尝试的插入值是生成的值(1439630),而不是我将其设置为的临时值。

我已将自动检测更改标志设置为关闭:

_context.Configuration.AutoDetectChangesEnabled = false;

目的是改善表现。因为这是纯粹的插入物 在我尝试编写数据库时,应该没有办法改变数据库行。

有什么建议吗?

0 个答案:

没有答案