我有記錄標記爲「IsArchived」。我正在尋找一種方便的方法來從當前的MVC3/EF3 Web應用程序中排除這些記錄。有沒有一種方法來添加一個過濾器到實體框架圖層來排除「IsArchived」記錄?
有沒有辦法給EF層添加某種「IsArchived」過濾器。在我的情況下,我有一個單獨的Model項目,其中表/視圖表示爲POCO實體,以及包含在CSDL和SSDL文件中的映射。
非常感謝您的任何幫助。
編輯:
我使用「的ObjectContext」,而不是「的DbContext」,主要是因爲我使用的數據建模工具。該工具創建上下文和POCO文件。
我想知道我是否可以編輯該上下文文件如下所示:
public ObjectSet<StdOrg> StdOrg
{
get
{
if ((_StdOrg == null))
{
_StdOrg = base.CreateObjectSet<StdOrg>("StdOrg");
// new line below. Got cast error tween both sides.
_StdOrg = (ObjectSet<StdOrg>) _StdOrg.Where(r => r.IsArchived == false);
}
return _StdOrg;
}
}
你有某種形式的抽象(如'UnitOfWork'&'Repository')在你的' DbContext'和'DbSet's? – qujck
嗨,謝謝你的回覆。不,我不知道,我剛剛閱讀了一些關於這個主題的有趣觀點。我認爲Repository是一個毫不費力的推薦路線,但它似乎不是。現在有一個強大的思想流派,現代的ORM不需要另一個抽象層,所以我的權宜之計可能並不是一個壞主意。我剛剛發現我使用「ObjectContext」而不是「DBContext」,並試圖將過濾器放入此上下文文件中。參見編輯。 – SamJolly
這裏是我對'Repository'模式的想法 - 在你的情況下,這將意味着你可以輕鬆地添加過濾http://stackoverflow.com/questions/14110890/not-using-repository-pattern-use-the-orm-as-是 - ef/17473500#17473500 – qujck