未添加实体

本文关键字:实体 添加 | 更新日期: 2023-09-27 17:56:07

采用以下基于 EF 的代码:

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

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

未添加实体

你忘了

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();

@John是对的。我只是补充为什么?在打电话之前,您没有打电话给SaveChanges CountCount 是来自IQueryable的扩展方法,它对数据库进行查询并返回存储实体的计数。您调用的单位SaveChanges实体不存储。

如果您想要待处理插入的数量,您可以调用:

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