Bonjour à tous,
Comme je ne me servais d'aucun ORM pour mon projet que j'ai codé moi-même le mapping, je me suis intéressé à Linq To Sql, qui accélère de beaucoup la création des entitées et des opérations CRUD.
J'ai donc détruit ma couche d'accès aux données et créé une class library à part, qui contient mon .dbml.
On conseille de séparer la couche d'accès aux données et la couche de présentation par une couche "business" qui elle appelle les fonctions de la couche d'accès aux données pour retourner les entités ou les collections d'entités nécessaires à la couche présentation.
Le problème que je vois avec Linq To Sql, est que mes entités font partie du fichier .dbml, donc si je veux accéder à ces entités par ma class library de présentation, je dois faire un lien direct entre cette dernière et la class library d'accès aux données.
Je ne pense pas que ce soit une bonne idée de "hardcoder" des expressions DLINQ directement dans mes interfaces utilisateur, alors, dans ma class library d'accès aux données (qui contient le fichier .dbml), j'ai créé une helper class qui contient les fonctions concrètes à ce que mes interfaces ont besoin (GetEmployee(int id), GetEmployees(), etc.). Ça centralise les fonctions d'accès aux données, mais j'ai quand même un lien direct entre ma couche présentation et ma couche d'accès aux données.
De plus, et c'est ma question principale, les fonctions qui ajoutent de nouvelles entités à la base de données via mes interfaces (AddEmployee(...)) contiendraient trop de paramètres, car je dois spécifier une tonne d'information pour l'entité. J'aimerais donc pouvoir, de mon interface, quand l'utilisateur clique 'OK', d'instancier une entité Employee, et d'assigner chacune de ses propriétés aux valeurs des textbox et combobox. Encore là, un lien direct avec ma couche d'accès aux données car je me sers des entités du fichier .dbml directement via ma methode cmdOK.Click();
Est-ce que quelqu'un a suffisamment travaillé avec Linq To Sql pour me guider vers une structure qui se tienne ?
Merci d'avance pour vos suggestions !
Partager