Heim Backend-Entwicklung C#.Net-Tutorial ABP-Einführungsreihe (4) – Definition der Domänenebene und Implementierung von Warehousing

ABP-Einführungsreihe (4) – Definition der Domänenebene und Implementierung von Warehousing

Jan 16, 2017 pm 05:26 PM

Repository: Das Repository wird zum Betreiben der Datenbank für den Datenzugriff verwendet. Die Warehousing-Schnittstelle wird auf der Domänenebene definiert, während die Warehousing-Implementierungsklasse auf der Infrastrukturebene geschrieben werden sollte.

In ABP muss die Warehousing-Klasse die IRepository-Schnittstelle implementieren, die häufig verwendete Methoden zum Hinzufügen, Löschen, Ändern und Aggregation definiert, einschließlich synchroner und asynchroner Methoden. Es umfasst hauptsächlich die folgenden Methoden:


ABP-Einführungsreihe (4) – Definition der Domänenebene und Implementierung von Warehousing

ABP stellt eine Standardimplementierung dieser Schnittstelle für verschiedene ORM-Frameworks bereit; Stellt eine Implementierung der generischen Version von EfRepositoryBase bereit.
Für NHibernate wird die Implementierung der generischen Version von NhRepositoryBase bereitgestellt.

Die Implementierung der generischen Version bedeutet, dass diese Methoden in den meisten Fällen ausreichen, um die Anforderungen allgemeiner Entitäten zu erfüllen. Wenn diese Methoden für die Entität ausreichend sind, müssen wir die für diese Entität erforderliche Repository-Schnittstelle/-Klasse nicht erstellen.

Sie können die Warehouse-Referenz direkt in der Anwendungsdienstschicht definieren und sie dann über den Konstruktor einfügen. Task Warehousing kann in unserer Anwendungsdienstschicht auf folgende Weise verwendet werden:

public class TaskAppService : ITaskAppService { 
private readonly IRepository<Task> _taskRepository; 
public TaskAppService(IRepository<Task> taskRepository) 
{ 
    _taskRepository = taskRepository; 
}
Nach dem Login kopieren
Dies ist die im Beispielcode verwendete Methode

2. So implementieren Sie benutzerdefiniertes Warehousing

Angenommen, wir müssen herausfinden, welche Aufgaben einem bestimmten Benutzer zugewiesen sind.

Erstellen Sie in der Domänenebene den Ordner IRepositories und definieren Sie dann 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);
}
}
Nach dem Login kopieren
In der Infrastrukturschicht wird die Lagerhaltung umgesetzt.

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();
    }
}
}
Nach dem Login kopieren
Diese Repository-Implementierung erbt von der generischen abstrakten Klasse LearningMpaAbpRepositoryBase, die von der Vorlage generiert wurde, und implementiert dann die IBackendTaskRepository-Schnittstelle. Hier müssen Sie den parametrisierten Konstruktor der Implementierungsklasse explizit deklarieren und den generischen IDbContextProvider verwenden, um die Datenbankkontextunterklasse ChargeStationContext an den Konstruktor der übergeordneten Klasse zu übergeben.

ABP-Einführungsreihe (4) – Definition der Domänenebene und Implementierung von Warehousing


3. Vorsichtsmaßnahmen für die Lagerung

Bei der Lagerungsmethode öffnet und schließt ABP automatisch die Datenbankverbindung.

Beim Aufruf der Warehousing-Methode wird automatisch die Datenbankverbindung geöffnet und die Transaktion gestartet.

Wenn eine Repository-Methode eine andere Repository-Methode aufruft, teilen sie tatsächlich dieselbe Datenbankverbindung und Transaktion.

Repository-Objekte sind temporär, da die IRepository-Schnittstelle standardmäßig von der ITransientDependency-Schnittstelle erbt. Daher erstellt der IOC-Container nur dann automatisch eine neue Instanz des Warehousing-Objekts, wenn es injiziert werden muss.

Das standardmäßige generische Repository kann die meisten unserer Anforderungen erfüllen. Erst wenn diese nicht erfüllt ist, wird eine maßgeschneiderte Lagerhaltung erstellt.

Der Quellcode wurde zu Ihrer eigenen Referenz auf Github-LearningMpaAbp hochgeladen.

ABP-Einführungsserienkatalog – Praktische Übungen zum Erlernen des Abp-Frameworks

Das Obige ist die ABP-Einführungsserie (4) – der Inhalt der Definition von Warehousing und Implementierung auf der Domänenebene. Weitere verwandte Inhalte finden Sie hier Achten Sie auf die chinesische PHP-Website (www.php.cn)!


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1662
14
PHP-Tutorial
1261
29
C#-Tutorial
1234
24
C# .NET -Interview Fragen und Antworten: Stufen Sie Ihr Fachwissen auf C# .NET -Interview Fragen und Antworten: Stufen Sie Ihr Fachwissen auf Apr 07, 2025 am 12:01 AM

C#.NET -Interviewfragen und Antworten umfassen Grundkenntnisse, Kernkonzepte und erweiterte Nutzung. 1) Grundkenntnisse: C# ist eine von Microsoft entwickelte objektorientierte Sprache und wird hauptsächlich im .NET-Framework verwendet. 2) Kernkonzepte: Delegation und Ereignisse ermöglichen dynamische Bindungsmethoden, und LINQ bietet leistungsstarke Abfragefunktionen. 3) Erweiterte Verwendung: Asynchrone Programmierung verbessert die Reaktionsfähigkeit und Expressionsbäume werden für die dynamische Codekonstruktion verwendet.

C# .NET: Erforschen von Kernkonzepten und Programmierfundamentaldaten C# .NET: Erforschen von Kernkonzepten und Programmierfundamentaldaten Apr 10, 2025 am 09:32 AM

C# ist eine moderne, objektorientierte Programmiersprache, die von Microsoft und als Teil des .NET-Frameworks entwickelt wurde. 1.C# unterstützt die objektorientierte Programmierung (OOP), einschließlich Einkapselung, Vererbung und Polymorphismus. 2. Asynchrones Programmieren in C# wird über Async implementiert und wartet auf Schlüsselwörter, um die Reaktionsfähigkeit der Anwendungen zu verbessern. 3.. Verwenden Sie LINQ, um Datensammlungen präzise zu verarbeiten. 4. Häufige Fehler umfassen Null-Referenzausnahmen und Indexausnahmen außerhalb des Bereichs. Zu den Debugging -Fähigkeiten gehört die Verwendung eines Debuggers und Ausnahmeberechnung. 5. Leistungsoptimierung umfasst die Verwendung von StringBuilder und das Vermeiden von unnötigem Packung und Unboxing.

Testen von C# .NET-Anwendungen: Einheit, Integration und End-to-End-Test Testen von C# .NET-Anwendungen: Einheit, Integration und End-to-End-Test Apr 09, 2025 am 12:04 AM

Die Teststrategien für C#.NET-Anwendungen umfassen Unit-Tests, Integrationstests und End-to-End-Tests. 1. Unit -Test stellt sicher, dass die Mindesteinheit des Codes unter Verwendung des Frameworks MStest, Nunit oder Xunit unabhängig funktioniert. 2. Integrierte Tests überprüfen die Funktionen mehrerer Einheiten kombinierter, häufig verwendeten simulierten Daten und externen Diensten. 3. End-to-End-Tests simuliert den vollständigen Betriebsprozess des Benutzers, und Selen wird normalerweise für automatisierte Tests verwendet.

Die anhaltende Relevanz von C# .NET: Ein Blick auf die aktuelle Verwendung Die anhaltende Relevanz von C# .NET: Ein Blick auf die aktuelle Verwendung Apr 16, 2025 am 12:07 AM

C#.NET ist immer noch wichtig, da es leistungsstarke Tools und Bibliotheken bietet, die mehrere Anwendungsentwicklung unterstützen. 1) C# kombiniert .NET Framework, um die Entwicklung effizient und bequem zu machen. 2) Mechanismus zum Typensicherheit und Müllsammlung von C#erhöht die Vorteile. 3) .NET bietet eine plattformübergreifende laufende Umgebung und eine reichhaltige APIs, wodurch die Flexibilität der Entwicklung verbessert wird.

Vom Web zum Desktop: Die Vielseitigkeit von C# .NET Vom Web zum Desktop: Die Vielseitigkeit von C# .NET Apr 15, 2025 am 12:07 AM

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

Advanced C# .NET Tutorial: Ace Ihr nächstes Senior Developer Interview Advanced C# .NET Tutorial: Ace Ihr nächstes Senior Developer Interview Apr 08, 2025 am 12:06 AM

Das Interview mit C# Senior Developer erfordert das Mastering von Kernwissen wie asynchrones Programmieren, LINQ und interne Arbeitsprinzipien von .NET -Frameworks. 1. Asynchrones Programmieren vereinfacht die Operationen durch Async und wartet auf die Verbesserung der Anwendungsreaktionsfähigkeit. 2.LinQ betreibt Daten im SQL -Stil und achtet auf die Leistung. 3. Die CLR des Net -Frameworks verwaltet den Speicher, und die Müllsammlung muss mit Vorsicht verwendet werden.

Ist C# .NET das Richtige für Sie? Bewertung seiner Anwendbarkeit Ist C# .NET das Richtige für Sie? Bewertung seiner Anwendbarkeit Apr 13, 2025 am 12:03 AM

C#.NetissoBableFoREenterPrise-Level Applications-WithemicrosoftCosystemDuetoitsStrongtyPing, Richlibrary, Androbustperformance.

C# .net und die Zukunft: Anpassung an neue Technologien C# .net und die Zukunft: Anpassung an neue Technologien Apr 14, 2025 am 12:06 AM

C# und .NET passen sich durch kontinuierliche Aktualisierungen und Optimierungen an die Bedürfnisse neuer Technologien an. 1) C# 9.0 und .NET5 Führen Sie den Datensatztyp und die Leistungsoptimierung ein. 2) .NETCORE verbessert die native und containerische Unterstützung von Cloud. 3) ASP.NetCore integriert sich in moderne Webtechnologien. 4) ML.NET unterstützt maschinelles Lernen und künstliche Intelligenz. 5) Asynchrone Programmierung und Best Practices verbessern die Leistung.

See all articles