C# EF4实体集:如何从TPH对象获取当前计数?

C# EF4实体集:如何从TPH对象获取当前计数?,c#,entity-framework-4,C#,Entity Framework 4,我有一个非常简单的TPH模型。 当我使用context.TIImport.AddObject(tiObj) 然后调用context.TIImport.Count()-该值不包括新对象 我希望能够在点击context.SaveChanges()之前添加多个对象 有没有办法在不调用SaveChanges的情况下判断集合中有多少对象?您可以通过进入ObjectContext.ObjectStateManager,检查添加到正确集合中的EntityState的所有实体,并将其包含在计数中。然而,你为什

我有一个非常简单的TPH模型。 当我使用
context.TIImport.AddObject(tiObj)
然后调用
context.TIImport.Count()
-该值不包括新对象

我希望能够在点击context.SaveChanges()之前添加多个对象


有没有办法在不调用SaveChanges的情况下判断集合中有多少对象?

您可以通过进入ObjectContext.ObjectStateManager,检查添加到正确集合中的EntityState的所有实体,并将其包含在计数中。然而,你为什么要这样做还不清楚。当您执行读取时,这些实体不会被包括在内,直到您使用SaveChanges()将它们实际持久化到底层数据存储;如果您的目标不是最终更改,那么您可能应该查看事务?

谢谢:这与在SQL-CE中设置键有关,因为它不允许我使用标识列。然而,我希望分批保存,而不是在添加每个项目之后保存-但在这样做时获取下一个Id/密钥。
var context = new CodeFirstContainer();

var g = new TIGuarantee
            {
                Id = 1,
                AccountNumber = "123",
                Amount = 123
            };
            context.TIImports.AddObject(g);

            var il = new TIImportLoan
            {
                Id = 2,
                AccountNumber = "123",
                Amount = 123
            };
            context.TIImports.AddObject(il);

            var i = context.TIImports.Count(); // = 0

            context.SaveChanges();
            var j = context.TIImports.Count(); // = 2
        }