我正在尝试构建一个解耦域模型。我的(抽象)域模型定义了一个实体,例如“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