2013-06-26 31 views
1

我們在所有表格中都有標準的db列,其中一個是布爾型「Active」。因此,我們不是物理刪除數據,而是將Active屬性設置爲false。是否可以將查詢規則應用於LINQ to SQL關聯列表?

這會導致一個問題,當我們使用的關聯屬性,像下面的關係:

User.Company.Name(Users.CompanyId - > Companies.Id)

如果公司的問題已標記as Active = false,當Active屬性的值爲false時,是否可以在我的數據訪問層中編寫通用規則以排除列表中的項目?

目前我們只有一個vanilla Linq to Sql配置。

回答

1

我不熟悉的LINQ到SQL(多與EF),但我想這將如果說得到解決,所有的類都具有該物業共用一個接口,例如:

public interface IHasActive 
{ 
    bool Active { get; set; } 
} 

然後你就可以實現一個擴展方法:

public static class IHasActiveExtensions 
{ 
    public static IQueryable<T> ExcludeInactive<T>(this IQueryable<T> query) 
     where T : IHasActive 
    { 
     return query.Where(m => m.Active); 
    } 
} 
+0

偉大的答案。非常有幫助 - 謝謝! –