我建立了一個NHibernate的存儲庫層,其中我有以下find方法:添加條件LINQ查詢
public IList<TEntity> Find(Expression<Func<TEntity, bool>> query)
我想一個條件添加到該方法中的查詢。額外的條件應該將行限制在RemovedAt大於DateTime.Now的地方。
說明使用SQL:
讓我們假設我有以下SQL查詢:
SELECT * FROM users WHERE first_name LIKE 'a%' OR last_name LIKE 'a%'
它看起來像這樣修改後:
SELECT * FROM users WHERE (first_name LIKE 'a%' OR last_name LIKE 'a%') AND created_at > '2010-09-22 19:31'
它可以用做linq查詢,還是在nhibernate?
編輯
對不起,忘了提,所有的實體沒有RemovedAt方法。接口被聲明爲:
public interface IRepository<TEntity, TKey> where TEntity : class, new()
我通過查找與該名稱的屬性和使用反射來更新的值更改CreatedAt/RemovedAt/UpdatedAt(在各自的方法)。
公開IQueryable還會暴露我想在存儲庫類中處理的較低級別異常。無論如何,我會讓服務層處理RemovedAt過濾器。 – jgauffin 2010-09-23 05:23:22
對於一些額外的抽象;請看http://code.google.com/p/linq-specifications/,這可以爲您提供更清晰/更統一的方法來制定查詢。 – DanP 2010-09-23 11:58:42