Skip to content
Emile NKZ edited this page Dec 3, 2024 · 14 revisions

Introduction

Prérequis : Veuillez utiliser la référence Assembly-CSharp-firstpass qui contient SQLite. Vous la retrouverez au même endroit que l'Assembly-CSharp.

Afin de stocker vos données avec l'ORM dans une base de donnée il va falloir suivre quelques règles du au SQLite et du a l'Orm de ModKit.

Définir une Table

Premièrement, vous devrez commencer par créer votre classe représentant vos table, voici ce qu'elle doit contenir :

  • Votre classe doit hérité de ModEntity. Cela permettra à votre classe d'être managé par l'ORM.
public class VotreClasse : ModEntity<VotreClasse>
  • Votre classe doit avoir une propriété Id (un identifiant unique) avec l'attribut obligatoire [PrimaryKey]. Vous pouvez ajouter l'attribut [AutoIncrement] pour que les identifiants soient générés automatiquement.
[AutoIncrement] [PrimaryKey] public int Id { get; set; }
  • Votre classe doit contenir toutes les propriétés nécessaires pour votre table. Ils doivent d'être Public et avec un getter et setter accessible.
public string Nom { get; set; }
public int Chiffre { get; set; }

Voici un exemple d'une table à son globale :

using SQLite;

namespace ModAdmin.Entities
{
    public class VotreClasse : ModKit.ORM.ModEntity<VotreClasse>
    {
        [AutoIncrement][PrimaryKey] public int Id { get; set; }

        public string Nom { get; set; }
        public int Chiffre { get; set; }

        public VotreClasse()
        {
        }
    }
}

Les attributs Optionnel

Les attributs sont des annotations que vous ajoutez à vos champs ou propriétés dans le code. Ils donnent des instructions spécifiques à l'ORM.

  • [NonSerialized] ou [Ignore] : Ces attributs indiquent à l'ORM de ne pas inclure un champ dans la base de données. Parfait pour des valeurs temporaires ou calculées.
  • [Unique] : Garantit que la valeur d’un champ soit unique dans la table. Attention, cela peut empêcher l’ajout ou la modification si une valeur identique existe déjà.
  • [NotNull] : Empêche qu'un champ ait une valeur nulle.

Initialisation

Après avoir crée votre Table, vous devrez faire en sorte que celle ci soit crée par l'ORM dans la DB ModKit. Rajoutez simplement Orm.RegisterTable<VotreClasse>(); dans OnPluginInit() et votre Table a bien été crée !

public override void OnPluginInit()
{
    base.OnPluginInit();
    Orm.RegisterTable<TestClassOrm>();
    Orm.RegisterTable<ChildTestClassOrm>();
}

Manipulation des Données

Une fois votre base de données initialisée, vous pouvez interagir avec vos données sans problème en utilisant les méthodes suivantes.

● Création d'une instance de votre table

Pour créer une nouvelle entrée dans votre table, vous pouvez utiliser le modèle ci-dessous :

VotreClasse instance = new VotreClasse(...);
instance.Nom = "Triple Monstre !";
instance.Chiffre = 20;
bool result = await instance.Save();

// Optionnel en fonction de l'état de la sauvegarde
if (result)
{
    // Sauvegarde effectuée avec succès
}
else
{
    // Sauvegarde impossible
}

● Rechercher un enregistrement par ID

Pour trouver un enregistrement précis via son ID :

int idToQuery = 15;
var queriedElement = await VotreClasse.Query(idToQuery);

● Récupérer tous les enregistrements

Pour récupérer tous les enregistrements de la table :

var allElements = await VotreClasse.QueryAll();

● Rechercher avec une condition

Pour rechercher un enregistrement précis en utilisant des conditions :

var queriedElements = await VotreClasse.Query(elmt => elmt.Chiffre > 10 && elmt.Nom == "Triple Monstre !");

● Modifier une donnée d'un enregistrement

Pour modifier les données d'un ou plusieurs enregistrements existants :

Modifier un seul enregistrement

var queriedElements = await VotreClasse.Query(elmt => elmt.Chiffre > 10);

// Cela vous retourne tous les enregistrements avec `Chiffre > 10`
// Pour modifier uniquement le premier enregistrement trouvé
VotreClasse element = queriedElements.FirstOrDefault();
if (element != null)
{
    element.Chiffre = 0;
    await element.Save();
}

Modifier plusieurs enregistrements

foreach (var element in queriedElements)
{
    element.Chiffre = 0;
    await element.Save();
}

● Supprimer un enregistrement

Pour supprimer un enregistrement existant :

//Vous recherchez votre element comme précédement et vous le supprimer
//Passez par queriedElements.FirstOrDefault() ou par un foreach
var result = await instance.Delete();

📒 Wiki

🧱 AAMenu

🔗 ORM

⚡️ EventHelper

🚚 JobHelper

🌀 PointHelper

🎭 SkinHelper

📂 PanelHelper

✒️ TextFormattingHelper

💜 DiscordHelper

🌱 NetworkAreaHelper

🧰 CraftHelper

🚕 VehicleHelper

📡 ProximityHelper

⚙️ OverrideHelper

🧾 JsonHelper

📦 Utilitaires

Clone this wiki locally