我注意到从DBContext.SaveChanges()
返回的计数高于预期。我有一个名为DocumentMaster
的实体和一个名为Workspace
的实体,其中包含WorkspaceDocumentLink
个实体的集合,这些实体只是WS_id
到DM_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);
这会影响计数吗?