ProsomoADOtools 1.0.2

dotnet add package ProsomoADOtools --version 1.0.2                
NuGet\Install-Package ProsomoADOtools -Version 1.0.2                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ProsomoADOtools" Version="1.0.2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ProsomoADOtools --version 1.0.2                
#r "nuget: ProsomoADOtools, 1.0.2"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install ProsomoADOtools as a Cake Addin
#addin nuget:?package=ProsomoADOtools&version=1.0.2

// Install ProsomoADOtools as a Cake Tool
#tool nuget:?package=ProsomoADOtools&version=1.0.2                

C'EST QUOI AspADOtools ?

Cette librairie est un générique basé sur la technologie ADO.net.

L'objectif de cette librairie est de factoriser les opérations répétitive (CRUD) tout en les optimisant et en les exposant implicitement dans toutes les classes qui en ont besoin, par le billet de l'héritage.

INSTALLATION

  • Via package Nuget: Rechercher le package AspADOtools et installer la version la plus récente.
  • Via la console du gestionnaire de package: Dans la console, executer la commande NuGet\Install-Package AspADOtools, vous pouvez rajouter ensuite '-Version num_version', pour spécifier la version a installer.
  • Configuration de la chaine de connection: Dans le point d'entrer de votre application, vous devez passer la chaine de connection a la librairie. Utiliser la propriété ConnectionString statique de l'objet AdoContext: (AdoContext.ConnectionString = chaine_de_connection).

PREREQUIS

En règle génèrale, toute table dans une base de données relationnel, comporte un champ dèidentification unique. Pour le cas de ce systeme, ce champ devra toujours s'appeler (ID).

  • Se rassurer que toutes les tables contiennent le champ ID.
  • Les champs de type Date dans la BD contenant la valeur ne doivent pas contenir de date vide, soit la valeur '000-00-00 00:00:00', le systeme ne pourra pas les interpretés comme une date valide. Faudra les remplacer a la place par '0001-01-01' ou autre valeur.

MAPPING, COMMENT LE MODELE COMMUNIQUE AVEC LA BASE DE DONNEES ?

→ Pour le bon fonctionnement des méthodes du générique, chaque modèle doit etre concilier avec la DB.

  • Les noms de champs en DB doivent être identique aux noms de propriétés dans le programme.
  • Certaines propriétés peuvent ne pas être utile pour les requête select, insert ou upate. Utiliser les decorateurs [IgnoreForSelectQuery] pour ignorer une propriété qui ne sera pas utiliser dans les requête Select, [IgnoreForInsertQuery] pour ignorer une propriété qui ne sera utiliser dans les requête insert et [Ignore ForUpdateQuery] pour les requêtes update.
  • NB: Dans le code, il est inutile d'ignorer une propriété qui n'est pas présente en BD, car cela se fait automatiquement. Donc ignorer juste les champs qui existent vraiment en BD et dont le mapping n'est pas souhaité pour un type de requête.

FONCTIONNEMENT ET UTILISATION

→ Plusieurs méthodes sont exposé par le générique.

  • dInsert / dUpdate: accessible uniquement en protected.
  • Update: Si la donnée existe, elle est mise a jour (dUpdate), sinon elle est inserer (dInsert).
  • Select / SelectAll: Sélectionne une entité via son Id, ou toute les entités.
  • SelectOneWhere / SelectAllWhere: Sélectionne une seul ou plusieurs entité en passant une chaine décrivant le filtre de la clause where, et un paramètre pour la requête (optionnel).
  • SearchOne / SearchAll: Sélectionne une seul ou plusieurs entité en passant une chaine décrivant la requête complète de sélection, et un paramètre pour la requête (optionnel).
  • SearchAllDynamic: Sélectionne plusieurs données et les retournes dans une liste d'objet dynamique (aucun mapping avec le modèle).
  • ExecuteNonQuery: Prend une requête quelquonque en paramètre et l'exécute.
  • DeleteWhere: avec un paramètre personnalisé pour la clause where.
  • HasAny: vérifie si une donnée existe dans la requête passé en paramètre.

→ Sélection de données provenant de plusieurs table (LES JOINTURES).

  • Les méthodes SearchOne et SearchAll possèdent un paramètre (separatorField) qui permet de définir la limite de séparation (nom du champ) pour le mapping du modèle. L'objet est mappé et les champs supplémentaires sont placé dans un objet dynamique ( DynamicData ).

  • DynamicData: Est une propriété du générique, qui expose a chaque modèle les propriétés supplémentaire non mappé dans la requete. En considérant cet exemple de requete, EX: SELECT User.*, Role.Name, Role.Type FROM User JOIN Role ON Role.ID = User.RoleID la valeur du parametre separatorField devra etre Name, l'objet User sera mapper, et la proprété DynamicData contiendra un objet avec les champs {Name: value, Type: value}

  • Toutes les méthodes de sélection multiple, sont basé sur le principe de lazy loading et renvoi un objet DataResult, contenant la liste de donnée sélectionner, et le total de données existant dans la BD.

  • Les méthodes du générique peuvent etre redéfini, a l'exception des methodes statique (Sélection de données) qui doivent etre masqué par le nouveau comportement.

Product Compatible and additional computed target framework versions.
.NET Framework net48 is compatible.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.2 133 8/28/2024
1.0.1 155 8/15/2024
1.0.0 127 8/15/2024