entity framework,软删除和查询
所以这是我的情况:
我正在使用IsDeleted
标志软删除表中的某些行,以便可以保留我的归档数据的跟踪。 我这样做是通过覆盖ObjectContext
的SaveChanges
语句来实现的。
问题是:如何只选择具有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查询内部放置一个查询,并根据该标志过滤记录。
有关详细信息,请参阅以下内容
使用拦截器软删除实体