我对如何使用EF6中ToList返回的列表感到有点困惑。如果我将列表绑定到CollectionViewSource,我可以轻松查看返回的对象。但是,我认为这些对象与EF在内存中跟踪的数据有些脱节,因此如果我编辑列表中的对象然后调用SaveChanges,则编辑将不会持久保存回数据存储。出于这个原因,我已经绑定到DBSets .Local,对这些对象进行编辑,然后调用SaveChanges。
我这样做了吗?
答案 0 :(得分:1)
这些对象根本没有断开连接!您对其属性所做的每项修改都将在SaveChanges调用中保留到数据存储区。
实体框架以这样的方式工作:它只加载一个记录一次,并且只加载一次到一个上下文中。换句话说,如果从DbSet对象获取实体(例如,通过Linq查询),它也将出现在Local集合中,并且它将是完全相同的对象。同样的事情适用于ToList()函数的结果;上下文中只有一个实例用于一个记录。在这一点上,我相信你说我的第一个陈述是显而易见的。
顺便说一句,你的方法(因此)也可以完成这项工作。
此致