所以这是我的情况:
我正在使用IsDeleted
标志软删除表中的某些行,以便可以保留我的归档数据的跟踪。我是通过覆盖SaveChanges
中的ObjectContext
语句来完成的。
问题是:如何只选择IsDeleted == false
的行,而不必在每个查询中指定&& !IsDeleted
?
有没有办法直接在我的上下文中指定这个?
TKX!
答案 0 :(得分:7)
您可以在表格上定义一个视图,然后查询该视图:
CREATE VIEW dbo.ActiveData
AS
SELECT (list of columns)
FROM dbo.YourTable
WHERE IsDeleted = 0
然后在您的EDMX模型中,从ActiveData
视图而不是基表中读取数据。
答案 1 :(得分:6)
如果右键单击模型查看器中的EntitySet,然后单击“表映射”,则可以在“添加条件”区域中进行操作。这应该按照你的要求进行,尽管根据marc_s的建议你可能最好使用View。
答案 2 :(得分:1)
这是一个古老的问题,但对于任何新来的人来说。从EF 6开始,你真的应该使用拦截器进行这种类型的查询。它在运行时在SQL查询内部放置一个查询,并根据该标志过滤记录。
有关详细信息,请参阅以下内容: