为什么我的Entity Framework 6.1(代码优先)SaveChanges数量高于预期?

时间:2014-09-30 10:30:08

标签: c# entity-framework

我注意到从DBContext.SaveChanges()返回的计数高于预期。我有一个名为DocumentMaster的实体和一个名为Workspace的实体,其中包含WorkspaceDocumentLink个实体的集合,这些实体只是WS_idDM_id的链接。

在我的单元测试中,我创建了一个Workspace,20个DocumentMaster和20个WorkspaceDocumentLink实体。当我拨打context.SaveChanges()时,我可以看到ChangeTracker.Entities()中的实体列表包含41个添加的实体,正如预期的那样。使用Sql Profiler,我可以看到41个插入语句正在按预期发布,没有别的。请注意,在上下文中没有添加,修改或删除任何其他内容。

所以我应该从SaveChanges()得到41,但我每次看到81。鉴于Workspace是唯一的唯一实体类型,似乎其他实体的数量增加了一倍。

我能想到的唯一可能影响计数的是我有DbCommandTreeInterceptor用一个包含CreatedBy信息的新子句替换insert子句:

interceptionContext.Result = new DbInsertCommandTree(command.MetadataWorkspace,
     command.DataSpace, command.Target, clauses.AsReadOnly(), command.Returning);

这会影响计数吗?

0 个答案:

没有答案