recherche
Maisondéveloppement back-endTutoriel C#.NetSérie d'introduction ABP (4) - Définition de la couche de domaine et mise en œuvre de l'entreposage

Dépôt : le référentiel est utilisé pour faire fonctionner la base de données pour l'accès aux données. L'interface d'entreposage est définie au niveau de la couche domaine, tandis que la classe d'implémentation de l'entreposage doit être écrite au niveau de la couche infrastructure.

Dans ABP, la classe d'entreposage doit implémenter l'interface IRepository, qui définit les méthodes d'ajout, de suppression, de modification et d'agrégation couramment utilisées, y compris les méthodes synchrones et asynchrones. Il comprend principalement les méthodes suivantes :


Série dintroduction ABP (4) - Définition de la couche de domaine et mise en œuvre de lentreposage

ABP fournit une implémentation par défaut de cette interface pour différents frameworks ORM
pour EntityFramework, Fournit l'implémentation de la version générique de EfRepositoryBase.
Pour NHibernate, l'implémentation de la version générique de NhRepositoryBase

La mise en place de la version générique fait que la plupart du temps, ces méthodes suffisent à répondre aux besoins des entités générales. Si ces méthodes sont suffisantes pour l'entité, nous n'avons pas besoin de créer l'interface/classe de référentiel requise par cette entité.

Vous pouvez définir directement la référence de l'entrepôt dans la couche de service applicatif puis l'injecter via le constructeur. L'entreposage de tâches peut être utilisé dans notre couche de service d'application de la manière suivante :

public class TaskAppService : ITaskAppService { 
private readonly IRepository<Task> _taskRepository; 
public TaskAppService(IRepository<Task> taskRepository) 
{ 
    _taskRepository = taskRepository; 
}

Il s'agit de la méthode utilisée dans l'exemple de code

2. Comment implémenter l'entreposage personnalisé

Supposons que nous ayons besoin de savoir quelles tâches sont assignées à un certain utilisateur.

Dans la couche de domaine, créez le dossier IRepositories, puis définissez IBackendTaskRepository.

namespace LearningMpaAbp.IRepositories
{/// <summary>/// 自定义仓储示例/// </summary>public interface IBackendTaskRepository : IRepository<Task>
{    /// <summary>
    /// 获取某个用户分配了哪些任务
    /// </summary>
    /// <param name="personId">用户Id</param>
    /// <returns>任务列表</returns>
    List<Task> GetTaskByAssignedPersonId(long personId);
}
}

Dans la couche infrastructure, l'entreposage est implémenté.

namespace LearningMpaAbp.EntityFramework.Repositories
{public class BackendTaskRepository:LearningMpaAbpRepositoryBase<Task>,IBackendTaskRepository{   
public BackendTaskRepository(IDbContextProvider<LearningMpaAbpDbContext> dbContextProvider) : base(dbContextProvider)
    {
    }    /// <summary>
    /// 获取某个用户分配了哪些任务
    /// </summary>
    /// <param name="personId">用户Id</param>
    /// <returns>任务列表</returns>
    public List<Task> GetTaskByAssignedPersonId(long personId)
    {        var query = GetAll();        if (personId>0)
        {
            query = query.Where(t => t.AssignedPersonId == personId);
        }        return query.ToList();
    }
}
}

Cette implémentation du référentiel hérite de la classe abstraite générique LearningMpaAbpRepositoryBase générée par le modèle, puis implémente l'interface IBackendTaskRepository. Ici, vous devez déclarer explicitement le constructeur paramétré de la classe d'implémentation et utiliser le générique IDbContextProvider pour transmettre la sous-classe de contexte de base de données ChargeStationContext au constructeur de la classe parent.

Série dintroduction ABP (4) - Définition de la couche de domaine et mise en œuvre de lentreposage


3. Précautions d'entreposage

Dans la méthode d'entreposage, ABP ouvre et ferme automatiquement la connexion à la base de données.

Lorsque la méthode d'entreposage est appelée, la connexion à la base de données est automatiquement ouverte et la transaction est démarrée.

Lorsqu'une méthode de référentiel appelle une autre méthode de référentiel, elles partagent en fait la même connexion à la base de données et la même transaction.

Les objets du référentiel sont temporaires car l'interface IRepository hérite de l'interface ITransientDependency par défaut. Par conséquent, le conteneur IOC créera automatiquement une nouvelle instance de l'objet d'entreposage uniquement lorsqu'il devra être injecté.

Le référentiel générique par défaut peut répondre à la plupart de nos besoins. Ce n'est que si cela n'est pas satisfait qu'un référentiel personnalisé sera créé.

Le code source a été téléchargé sur Github-LearningMpaAbp pour votre propre référence.
Catalogue de la série d'introduction ABP - Exercices pratiques pour apprendre le framework Abp

Ce qui précède est la série d'introduction ABP (4) - le contenu de la définition de l'entreposage et de la mise en œuvre au niveau du domaine. Pour plus de contenu connexe, veuillez. faites attention au site Web PHP chinois (www.php.cn) !


Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Mastering C # .NET Design Modèles: de la singleton à l'injection de dépendanceMastering C # .NET Design Modèles: de la singleton à l'injection de dépendanceMay 09, 2025 am 12:15 AM

Les motifs de conception en C # .NET incluent les modèles singleton et l'injection de dépendance. 1.Singleton Mode garantit qu'il n'y a qu'une seule instance de la classe, qui convient aux scénarios où les points d'accès mondiaux sont nécessaires, mais l'attention doit être accordée aux problèmes de sécurité et d'abus. 2. L'injection de dépendance améliore la flexibilité du code et la testabilité en injectant les dépendances. Il est souvent utilisé pour l'injection de constructeur, mais il est nécessaire d'éviter une utilisation excessive pour augmenter la complexité.

C # .NET dans le monde moderne: applications et industriesC # .NET dans le monde moderne: applications et industriesMay 08, 2025 am 12:08 AM

C # .NET est largement utilisé dans le monde moderne dans les domaines du développement de jeux, des services financiers, de l'Internet des objets et du cloud computing. 1) Dans le développement de jeux, utilisez C # pour programmer via le moteur Unity. 2) Dans le domaine des services financiers, C # .NET est utilisé pour développer des systèmes de trading haute performance et des outils d'analyse des données. 3) En termes d'IoT et de cloud computing, C # .NET fournit la prise en charge des services Azure pour développer la logique de contrôle des périphériques et le traitement des données.

C # .NET Framework vs.NET Core / 5/6: Quelle est la différence?C # .NET Framework vs.NET Core / 5/6: Quelle est la différence?May 07, 2025 am 12:06 AM

.Netframeworkiswindows-centric, while.netcore / 5/6Supportscross-plateformDevelopment.1) .netframework, puisque 2002, iSidealForwindowsApplications butlimitedIncross-PlateformCapabilities.2) .NetCore, à partir de 2016, AnditseVolutions (.Net5 / 6) offrantbetterperperper, Cross-witsevolutions (.Net5 / 6) offrantbetterperperper, Cross-wit-,.

La communauté des développeurs C # .NET: ressources et soutienLa communauté des développeurs C # .NET: ressources et soutienMay 06, 2025 am 12:11 AM

La communauté C # .NET Developer fournit des ressources et un soutien riches, notamment: 1. Documents officiels de Microsoft, 2. Forums communautaires tels que Stackoverflow et Reddit, et 3. Projets open source sur GitHub. Ces ressources aident les développeurs à améliorer leurs compétences en programmation de l'apprentissage de base aux applications avancées.

L'avantage C # .NET: fonctionnalités, avantages et cas d'utilisationL'avantage C # .NET: fonctionnalités, avantages et cas d'utilisationMay 05, 2025 am 12:01 AM

Les avantages de C # .NET comprennent: 1) les fonctionnalités linguistiques, telles que la programmation asynchrone simplifie le développement; 2) Performance et fiabilité, améliorant l'efficacité par le biais de mécanismes de compilation JIT et de collecte des ordures; 3) Prise en charge multiplateforme, .Netcore étend les scénarios d'application; 4) Un large éventail d'applications pratiques, avec des performances exceptionnelles du Web au bureau et au développement de jeux.

C # est-il toujours associé à .NET? Explorer des alternativesC # est-il toujours associé à .NET? Explorer des alternativesMay 04, 2025 am 12:06 AM

C # n'est pas toujours lié à .NET. 1) C # peut s'exécuter dans l'environnement mono d'exécution et convient à Linux et à MacOS. 2) Dans le moteur Unity Game, C # est utilisé pour les scripts et ne s'appuie pas sur le framework .NET. 3) C # peut également être utilisé pour le développement du système intégré, tel que .NetMicRoframework.

L'écosystème .NET: le rôle de C # et au-delàL'écosystème .NET: le rôle de C # et au-delàMay 03, 2025 am 12:04 AM

C # joue un rôle de base dans l'écosystème .NET et est le langage préféré pour les développeurs. 1) C # fournit des méthodes de programmation efficaces et faciles à utiliser, combinant les avantages de C, C et Java. 2) Exécuter via .NET Runtime (CLR) pour assurer une opération efficace de plate-forme multipliée. 3) C # prend en charge l'utilisation de base à avancée, comme la programmation LINQ et asynchrone. 4) L'optimisation et les meilleures pratiques incluent l'utilisation de la programmation StringBuilder et asynchrone pour améliorer les performances et la maintenabilité.

C # En tant que langue .NET: la base de l'écosystèmeC # En tant que langue .NET: la base de l'écosystèmeMay 02, 2025 am 12:01 AM

C # est un langage de programmation publié par Microsoft en 2000, visant à combiner la puissance de C et la simplicité de Java. 1.C # est un langage de programmation orienté objet type qui prend en charge l'encapsulation, l'héritage et le polymorphisme. 2. Le processus de compilation de C # convertit le code en un langage intermédiaire (IL), puis le compile en exécution de code machine dans l'environnement d'exécution .NET (CLR). 3. L'utilisation de base de C # comprend des déclarations variables, des flux de contrôle et des définitions de fonctions, tandis que les usages avancés couvrent la programmation asynchrone, LINQ et les délégués, etc. 4. Les erreurs courantes incluent les exceptions de mésappariement de type et de référence nulle, qui peuvent être déboguées via le débogueur, la gestion et le journalisation des exceptions. 5. Les suggestions d'optimisation des performances incluent l'utilisation de LINQ, de programmation asynchrone et d'amélioration de la lisibilité du code.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

SublimeText3 Linux nouvelle version

SublimeText3 Linux nouvelle version

Dernière version de SublimeText3 Linux

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles