Question sur l'architecture Domain-driven design
J'ai un site de gestions de questions. Et j'utilise l'architecture Domain-driven design.
Je l'ai fait il y a quelque temps, je ne retrouve plus la documation qui m'a inspiré.
J'ai des doutes si je l'ai bien fait ?
J'ai d'autres tables dans ma base de donnée. Je peux utiliser les mêmes class où dois-je en créer des nouvelles pour chaque table, ou juste faire un repository différent par table ?
J'ai aussi des interactions métiers entre les tables, où dois-je les incorporer ?
Par exemple, si j'ai mon user qui fait partit d'un groupe il peut récuperer certaine question et pas d'autre. (voir des choses plus complexe)
Merci pour votre aide
Boostrap sur la partie WEB
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public class Bootstrap { public static QuestionController GetQuestionController() { return new QuestionController(new QuestionService(new EntityQuestionRepository("MaChaineDeConnexion"))); ; } }
Controller
Service
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class QuestionController { private readonly IQuestionService _service; public QuestionController(IQuestionService service) { _service = service; } public IEnumerable<QuestionPOCO> GetQuestions() { return _service.GetQuestions(); } }
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public interface IQuestionService { IEnumerable<QuestionPOCO> GetQuestions(); } public class QuestionService : IQuestionService { private IQuestionRepository _repository; public QuestionService(IQuestionRepository repository) { _repository = repository; } public IEnumerable<QuestionPOCO> GetQuestions() { return _repository.GetQuestions(); } }
Repository
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public interface IQuestionRepository { IEnumerable<QuestionPOCO> GetQuestions(); }
DAL
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public class EntityQuestionRepository : IQuestionRepository { private readonly DataContext _dataContext; public EntityQuestionRepository(string connectionString) { _dataContext = new DataContext(connectionString); } public IEnumerable<QuestionPOCO> GetQuestions() { var questions = (from q in _dataContext.QuizQuestions select q).AsEnumerable(); //CONVERTION des entity question en QuestionPOCO return QuestionFactory(questions); } }
Partager