我正在嘗試構建一個解耦域模型。我的(抽象)域模型定義了一個實體,例如「Product」,然後我的具體SQL實現爲該實體提供了一個轉換方法。轉換Linq表達式的基類
例如:
public interface IDomainEntity<T> where T : class
{
T ToDomainEntity();
}
我具體的SQL類,那麼實現該接口:
public partial class Product : IDomainEntity<Domain.Product>
{
public Domain.Product ToDomainEntity()
{
return new Domain.Product
{
ProductId = this.ProductId,
...
};
}
}
從我的產品領域的服務,我希望能夠揭露一般的過濾方法
public virtual IQueryable<T> Filter(Expression<Func<T, bool>> predicate)
{
return GetAll().Where(predicate);
}
在這種情況下,T的類型是Domain.Product。我遇到的問題是,在SQL存儲庫實現中,我需要將表達式從Domain.Product類型轉換爲Sql.Product類型,以便我可以將它用於我的Linq to Sql表。
是否有可能採取一個表達的基礎,並將其轉換爲另一種:
Expression<Func<Domain.Product, bool>>
到
Expression<Func<Sql.Product, bool>>
道歉提前如果這沒有意義。
Hello Mark,我相信您可能會直接對我的困境負責,我正在閱讀您的書'依賴注入in。淨'。在意識到自己實際上是Mary Rowan的時候,上面的內容是通過我的努力來彌補的:-)我試圖做的是創建一種方法,讓消費者在獲取數據方面有更大的靈活性 - 我想我是試圖避免必須在域服務上創建太多的檢索方法(可能具有類似的簽名)。感謝您的指導 - 我會再次考慮。 – Neilski 2012-02-08 21:36:00