我有一个丰富的域,所以我想将域模型与持续模型分开,这是所有域驱动设计从业人员推荐的。 假设我有一个下列丰富的域模型:实体框架映射到域对象
public class Order
{
Public Guid Id {get; private set;}
Public Property1 {get; private set;}
Public Property2 {get; private set;}
private List<Item> Items;
Public AddItem() { }
....
}
这是我的数据传输Obect(实体框架在使用它):
public class OrderDTO
{
public Guid Id {get; set;}
Public Property1 {get; set;}
Public Property2 {get; set;}
...
}
实体框架的DbContext:
public partial class EntityFrameworkContext : DbContext
{
...
public virtual DbSet<OrderDTO> Orders{ get; set; }
...
}
库:
public class OrderRepository : IOrderRepository
{
private EntityFrameworkContext _context;
....
public IQueryable<Order> FindBy(Expression<Func<Order, bool>> predicate)
{
//how to implement this ??
}
}
我如何实现方法FindBy?我不能使用_context.Orders.where(谓词),因为entitiy框架上下文适用于OrderDTO而不适用于Order。我需要某种方式之间的映射Func<Order, bool>
到Func<OrderDTO, bool>
。
任何帮助将appriciated。
对不起我的错误。它应该是Order。我现在改了它。 – Lahmacun
'实体框架ist使用它“第三个词是什么意思? – mjwills
我使用Automapper将实体映射到DTO。但是在我的项目中,我在存储库和域之间有一个层。该层(服务层)接受DTO,映射到实体并调用存储库。这样我的存储库只关心实体,我的视图只关心DTO,服务层完成剩下的工作。 – garethb