【发布时间】:2012-02-08 17:19:48
【问题描述】:
我正在尝试构建一个解耦的域模型。我的(抽象)域模型定义了一个实体,例如“产品”,然后我的具体 SQL 实现为该域实体提供了一种转换方法。
例如:
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>>
如果这没有意义,请提前道歉。
【问题讨论】:
标签: linq-to-sql dependency-injection