Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何筛选使用linq to实体删除的实体_Linq_Entity Framework_Entity Framework 4_Linq To Entities - Fatal编程技术网

如何筛选使用linq to实体删除的实体

如何筛选使用linq to实体删除的实体,linq,entity-framework,entity-framework-4,linq-to-entities,Linq,Entity Framework,Entity Framework 4,Linq To Entities,我有一个singleton DBContext,但由于某些原因,当实例在两个方法之间共享时,不会填充在其他方法中所做的更改 例如:Method1Delete2RowS()将删除2行。 Method2()读取所有未删除的行 我的方法2也总是显示已删除的记录。因为我还没有接受任何改变 我用过这样的东西 context.Students.Where(x => context.ObjectStateManager.GetObjectStateEntry(x)

我有一个singleton DBContext,但由于某些原因,当实例在两个方法之间共享时,不会填充在其他方法中所做的更改

例如:
Method1Delete2RowS()
将删除2行。
Method2()
读取所有未删除的行

我的方法2也总是显示已删除的记录。因为我还没有接受任何改变

我用过这样的东西

context.Students.Where(x => context.ObjectStateManager.GetObjectStateEntry(x)
                            .State != System.Data.EntityState.Deleted);
但此代码引发一个异常,LINQ无法识别“GetObjectStateEntry()”


如何修复此问题?

异常是由于EF试图将LINQ查询转换为数据库执行的SQL而导致的。当然,无法将
GetObjectStateEntry
调用发送到数据库。您必须切换到linq to对象:

context.Students.AsEnumerable().Where(x => ...
不幸的是,在
ObjectContext
API中,没有一种简单的方法可以获取未删除的实体。 在
DbContext
API中,您可以使用本地集合,如

context.Students.Local

本地集合显示由以前的查询加载的实体。好在删除的条目被从本地集合中排除。也许是为了鼓励您移动到
DbContext

删除行后是否有
context.SaveChanges()
?我不想保存更改,所以我没有。当用户单击Save时,更改将被保存。我对查询做了如下更改:context.Students.Where(x=>x.EntityState!=System.Data.EntityState.Deleted);我得到了以下异常:指定的类型成员“EntityState”在LINQ to实体中不受支持。仅支持初始化器、实体成员和实体导航属性。您的<代码> dBrave真的是<代码> DbValue还是 ObjistValue?这是一个对象上下文可以考虑,但会花一些时间用ObjistCopExchange修改为<代码> DbValue可能需要相当大的重构,我凭经验知道。但这确实值得付出努力。更多的激励,我无法改变。Gert Arnold:我做了所有的重构,但是在从ObjectContext更改为DbContext之后,我的Linq就停止工作了。有什么不对劲吗?我不能使用First()或任何其他Linq方法