实体未加入

时间:2011-05-10 21:00:13

标签: c# entity-framework entity-framework-4

采用以下基于EF的代码:

var newItem = context.Items.CreateObject();
newItem.ID = Guid.NewGuid();
newItem.Name = "Some text";
context.Items.AddObject(newItem);
int count = context.Items.Count();

在这种情况下,什么会导致计数返回零?

2 个答案:

答案 0 :(得分:8)

你忘记了

context.SaveChanges();

看起来应该是这样的

var newItem = context.Items.CreateObject();
newItem.ID = Guid.NewGuid();
newItem.Name = "Some text";
context.Items.AddObject(newItem);
context.SaveChanges();   
int count = context.Items.Count();

答案 1 :(得分:5)

@John是对的。我只是添加为什么?在致电SaveChanges之前,您没有致电CountCountIQueryable的扩展方法,它对数据库进行查询并返回存储实体的计数。您调用SaveChanges单位的单位未存储。

如果您想要多个待处理插入,可以调用:

var count = context.ObjectStateManager
                   .GetObjectStateEntries(EntityState.Added)
                   .Select(e => e.Entity)
                   .OfType<Item>()
                   .Count();