我是使用实体框架的新手。我使用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;
目的是改善表现。因为这是纯粹的插入物 在我尝试编写数据库时,应该没有办法改变数据库行。
有什么建议吗?