Maison développement back-end Tutoriel C#.Net Série d'introduction ABP (4) - Définition de la couche de domaine et mise en œuvre de l'entreposage

Série d'introduction ABP (4) - Définition de la couche de domaine et mise en œuvre de l'entreposage

Jan 16, 2017 pm 05:26 PM

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; 
}
Copier après la connexion

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);
}
}
Copier après la connexion

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();
    }
}
}
Copier après la connexion

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 de ce site Web
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

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 !

Article chaud

Niveaux de force pour chaque ennemi et monstre de R.E.P.O.
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
<🎜>: Grow A Garden - Guide de mutation complet
2 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1662
14
Tutoriel PHP
1261
29
Tutoriel C#
1234
24
C # .NET des questions et réponses d'entrevue: améliorez votre expertise C # .NET des questions et réponses d'entrevue: améliorez votre expertise Apr 07, 2025 am 12:01 AM

C # .NET Les questions et réponses d'entrevue comprennent les connaissances de base, les concepts de base et l'utilisation avancée. 1) Connaissances de base: C # est un langage orienté objet développé par Microsoft et est principalement utilisé dans le framework .NET. 2) Concepts de base: la délégation et les événements permettent des méthodes de liaison dynamiques, et LINQ fournit des fonctions de requête puissantes. 3) Utilisation avancée: la programmation asynchrone améliore la réactivité et les arbres d'expression sont utilisés pour la construction de code dynamique.

C # .NET: Explorer les concepts de base et les principes fondamentaux de la programmation C # .NET: Explorer les concepts de base et les principes fondamentaux de la programmation Apr 10, 2025 am 09:32 AM

C # est un langage de programmation moderne et orienté objet développé par Microsoft et dans le cadre du .NET Framework. 1.C # prend en charge la programmation orientée objet (POO), y compris l'encapsulation, l'héritage et le polymorphisme. 2. La programmation asynchrone en C # est implémentée via Async et attend des mots clés pour améliorer la réactivité des applications. 3. Utilisez LINQ pour traiter les collections de données concisement. 4. Les erreurs courantes incluent les exceptions de référence NULL et les exceptions indexes hors gamme. Les compétences de débogage comprennent l'utilisation d'un débogueur et une gestion des exceptions. 5. L'optimisation des performances comprend l'utilisation de StringBuilder et d'éviter l'emballage et le déballage inutiles.

Test C # .NET Applications: unité, intégration et tests de bout en bout Test C # .NET Applications: unité, intégration et tests de bout en bout Apr 09, 2025 am 12:04 AM

Les stratégies de test pour les applications C # .NET comprennent les tests unitaires, les tests d'intégration et les tests de bout en bout. 1. Le test unitaire garantit que l'unité minimale du code fonctionne indépendamment, en utilisant le cadre MSTEST, NUnit ou Xunit. 2. Les tests intégrés vérifient les fonctions de plusieurs unités combinées et des données simulées couramment utilisées et des services externes. 3. Les tests de bout en bout simulent le processus de fonctionnement complet de l'utilisateur et le sélénium est généralement utilisé pour les tests automatisés.

La pertinence continue de C # .net: un regard sur l'utilisation actuelle La pertinence continue de C # .net: un regard sur l'utilisation actuelle Apr 16, 2025 am 12:07 AM

C # .NET est toujours important car il fournit des outils et des bibliothèques puissants qui prennent en charge le développement d'applications multiples. 1) C # combine .NET Framework pour rendre le développement efficace et pratique. 2) Le mécanisme de collecte de la sécurité et des ordures de C # améliore ses avantages. 3) .NET fournit un environnement de course multiplateforme et des API riches, améliorant la flexibilité du développement.

Du Web au bureau: la polyvalence de C # .net Du Web au bureau: la polyvalence de C # .net Apr 15, 2025 am 12:07 AM

C # .NETtisversatileforbothwebandDeskTopDevelopment.1) forweb, useasp.netfordynamicapplications.2) fordesktop, employwindowsformSorwpfforrichInterfaces.3) usexamarinforcross-plateformDevelopment, permanant les codéescosswindows, macos, linux, etmobiledevices.

Tutoriel avancé C # .NET: Ace votre prochain entretien de développeur senior Tutoriel avancé C # .NET: Ace votre prochain entretien de développeur senior Apr 08, 2025 am 12:06 AM

L'entrevue avec C # Developer Senior Developer nécessite de maîtriser les connaissances de base telles que la programmation asynchrone, la LINQ et les principes de travail internes des frameworks .NET. 1. La programmation asynchrone simplifie les opérations par asynchronisation et attend pour améliorer la réactivité de l'application. 2.Linq exploite des données dans le style SQL et fait attention aux performances. 3. La CLR du cadre net gère la mémoire et la collecte des ordures doit être utilisée avec prudence.

C # .NET vous convient-il? Évaluer son applicabilité C # .NET vous convient-il? Évaluer son applicabilité Apr 13, 2025 am 12:03 AM

C # .NeTissuitableFormenterprise-LevelApplications withithemicrosofosystématetoitsstrongThpyping, RichLibrary, androbustperformance.wowever, itmayNotBeidealForcross-PlatformDevelopmentorwhenRawpeediscritical, whileLanguageSlikerUstorGomightBeferable.

C # .NET et l'avenir: s'adapter aux nouvelles technologies C # .NET et l'avenir: s'adapter aux nouvelles technologies Apr 14, 2025 am 12:06 AM

C # et .NET s'adaptent aux besoins des technologies émergentes à travers des mises à jour et des optimisations continues. 1) C # 9.0 et .NET5 introduire le type d'enregistrement et l'optimisation des performances. 2) .netcore améliore le support natif et conteneurisé cloud. 3) ASP.Netcore s'intègre aux technologies Web modernes. 4) ML.NET prend en charge l'apprentissage automatique et l'intelligence artificielle. 5) La programmation asynchrone et les meilleures pratiques améliorent les performances.

See all articles