Service Layer are repeating my Repositories

Posted by Felipe on Stack Overflow See other posts from Stack Overflow or by Felipe
Published on 2010-05-21T17:01:17Z Indexed on 2010/05/21 19:50 UTC
Read the original article Hit count: 166

Hi all,

I'm developing an application using asp.net mvc, NHibernate and DDD. I have a service layer that are used by controllers of my application. Everything are using Unity to inject dependencies (ISessionFactory in repositories, repositories in services and services in controllers) and works fine.

But, it's very common I need a method in service to get only object in my repository, like this (in service class):

public class ProductService {

   private readonly IUnitOfWork _uow;
   private readonly IProductRepository _productRepository;

   public ProductService(IUnitOfWork unitOfWork, IProductRepository productRepository) {
      this._uow = unitOfWork;
      this._productRepository = productRepository;
   }

   /* this method should be exists in DDD ??? It's very common */
   public Domain.Product Get(long key) {
      return _productRepository.Get(key);
   }

   /* other common method... is correct by DDD ? */
   public bool Delete(long key) {
      usign (var tx = _uow.BeginTransaction()) {
         try 
         {
           _productRepository.Delete(key);
           tx.Commit();
           return true;
         } catch {
           tx.RollBack();
           return false;
         }        
      }
   }

   /* ... others methods ... */

}

This code is correct by DDD ? For each Service class I have a Repository, and for each service class need I do a method "Get" for an entity ?

Thanks guys

Cheers

© Stack Overflow or respective owner

Related posts about ddd

Related posts about nhibernate