Entity Framework ObjectContext是否正确实现了工作单元模式?

Nik*_*vic 6 entity-framework entity-framework-4

实体框架4 - STE - 简单数据库与单表博客具有BlogID PK列...

var samplesDbEntities = new SamplesDBEntities();
var blogId = Guid.NewGuid();
samplesDbEntities.Blogs.AddObject(new Blog() { BlogID = blogId });
var objectSetResult = samplesDbEntities.Blogs
                                       .Where(p => p.BlogID == blogId)
                                       .SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)

(代码执行的结果=> objectSetResult ==在最后一行之后为null)

AFAIK,ObjectContext是UoW模式的实现,在这种情况下,我想我应该从ObjectSet(Repository)返回结果只是"标记为瞬态"有人可以解释一下我做错了什么以及为什么objectSetResult在这里有空值?

(是的,我知道ObjectStateManager,但对我而言,它更像是上面提到的架构问题的补丁)

STO*_*STO 1

您的示例中违反的模式不是工作单元模式,而是身份映射。

工作单元跟踪代码对对象所做的更改,而不是您手动处理。

身份映射模式使对象上下文具有针对单个主键值的单个实体实例。

这对我来说很奇怪,但实体框架(以及 LINQ 2 SQL)并不在每种情况下映射对象标识,上述情况就是其中一种情况。