


Sé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 :
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.
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) !

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds











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 # 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.

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.

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.

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

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 # .NeTissuitableFormenterprise-LevelApplications withithemicrosofosystématetoitsstrongThpyping, RichLibrary, androbustperformance.wowever, itmayNotBeidealForcross-PlatformDevelopmentorwhenRawpeediscritical, whileLanguageSlikerUstorGomightBeferable.

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.
