Entity framework 实体框架AddObject未将对象添加到EntitySet

Entity framework 实体框架AddObject未将对象添加到EntitySet,entity-framework,c#-4.0,Entity Framework,C# 4.0,我有下面的代码 private void DoAddPropertyType() { var ctx = Globals.DbContext; var propType = new PropertyType() { ID = Guid.NewGuid(), Name = "NewType", Description = "New Property Type", ModifiedDate = DateTime.

我有下面的代码

private void DoAddPropertyType()
{
    var ctx = Globals.DbContext;
    var propType = new PropertyType()
    {
        ID = Guid.NewGuid(),
        Name = "NewType",
        Description = "New Property Type",
        ModifiedDate = DateTime.Now
    };
    ctx.AddToPropertyTypes(propType);
    PropertyTypes.Add(propType);
}
Globals.DbContext
提供对启动时启动的objectcontext的静态引用。由于某种原因,
ctx.AddToPropertyTypes(propType)位不会将实体添加到上下文中。如果我在该行之后断点并浏览
ctx.PropertyTypes
实体集,则它不在那里。有什么想法吗

编辑1:
如果我在
ctx.AddToPropertyTypes(propType)
步骤之后添加
ctx.SaveChanges()
,实际添加似乎只在执行SaveChanges之后发生。但是,这不符合我的要求,因为我希望在保存之前首先验证对象,并希望遍历实体集中的实体。有人知道另一种方法吗?

这就是你的问题所在
ctx.PropertyTypes
不是一个真正的集合-它是数据库的入口,您的“浏览”实际上是对尚未存储新对象的数据库执行查询。如果要在不保存的情况下查找添加到上下文中的新对象,必须在
ObjectStateManager
中搜索该对象:

var entity = ctx.ObjectStateManager
                .GetObjectStateEntries(EntityState.Added)
                .Where(e => !e.IsRelationship)
                .Select(e => e.Entity)
                .OfType<PropertyType>()
                .SingleOrDefault(p => p.ID == ...);
var entity=ctx.ObjectStateManager
.GetObjectStateEntries(EntityState.Add)
.其中(e=>!e.IsRelationship)
.选择(e=>e.Entity)
第()类
.SingleOrDefault(p=>p.ID==…);

在何处调用
保存更改
?仅在执行一些验证之后。请参见上面的编辑1谢谢!我想我现在更了解EF了。您还向我展示了一种获取所有新添加实体列表的方法,这非常有用。