entity framework,软删除和查询

所以这是我的情况:

我正在使用IsDeleted标志软删除表中的某些行,以便可以保留我的归档数据的跟踪。 我这样做是通过覆盖ObjectContextSaveChanges语句来实现的。

问题是:如何只选择具有IsDeleted == false ,而不必在每个查询中指定&& !IsDeleted

有没有办法可以直接在我的上下文中指定它?

TKX!

您可以在表上定义视图并查询该视图:

 CREATE VIEW dbo.ActiveData AS SELECT (list of columns) FROM dbo.YourTable WHERE IsDeleted = 0 

然后在EDMX模型中,从ActiveData视图而不是基表中读取数据。

如果右键单击模型查看器中的EntitySet,然后单击“表映射”,则可以在“添加条件”的区域中进行操作。 根据marc_s的建议,尽管你可能最好使用View,但这应该可以满足您的要求。

这是一个古老的问题,但对于任何新来的人来说。 从EF 6开始,你真的应该使用拦截器进行这种类型的查询。 它在运行时在SQL查询内部放置一个查询,并根据该标志过滤记录。

有关详细信息,请参阅以下内容

使用拦截器软删除实体