J'ai un domaine riche, donc je veux séparer le modèle de domaine du modèle de persistance, ce qui est recommandé par tous les praticiens de la conception guidée par le domaine. Supposons que j'ai un riche modèle de domaine suivant:Entity Framework Mapping à l'objet de domaine
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() { }
....
}
Ceci est mon transfert de données obect (Entity Framework utilise elle):
public class OrderDTO
{
public Guid Id {get; set;}
Public Property1 {get; set;}
Public Property2 {get; set;}
...
}
Entity Framework DbContext:
public partial class EntityFrameworkContext : DbContext
{
...
public virtual DbSet<OrderDTO> Orders{ get; set; }
...
}
Repository :
public class OrderRepository : IOrderRepository
{
private EntityFrameworkContext _context;
....
public IQueryable<Order> FindBy(Expression<Func<Order, bool>> predicate)
{
//how to implement this ??
}
}
Comment puis-je implémenter la méthode FindBy ?? Je ne peux pas utiliser _context.Orders.where (prédicat) car le contexte d'encadrement d'entaille fonctionne avec OrderDTO et non avec Order. J'ai besoin d'une cartographie entre Func<Order, bool>
à Func<OrderDTO, bool>
.
Toute aide serait appriciée.
Désolé mon erreur. Ce devrait être l'ordre. Je l'ai changé maintenant. – Lahmacun
'Entity Framework l'utilise 'que signifie ce troisième mot? – mjwills
J'utilise Automapper pour mapper des entités à DTO. Cependant, dans mon projet, j'ai une couche entre le dépôt et le domaine. Cette couche (couche de service) accepte un DTO, est mappée à une entité et appelle le référentiel. De cette façon, mon référentiel se soucie uniquement des entités et ma vue se préoccupe uniquement des DTO, la couche de service fait le reste. – garethb