Heim  >  Artikel  >  Backend-Entwicklung  >  ABP-Einführungsreihe (3) – Entitäten auf der Domänenebene erstellen

ABP-Einführungsreihe (3) – Entitäten auf der Domänenebene erstellen

黄舟
黄舟Original
2017-01-16 17:24:032082Durchsuche

In diesem Abschnitt befassen wir uns hauptsächlich mit der Domänenschicht. Zunächst müssen wir eine Eins-zu-eins-Entsprechung zwischen der Architektur von ABP und den aus der Vorlage erstellten Lösungen herstellen. Es gibt online verfügbare Codegeneratoren, die uns die Aufgabe in diesem Schritt erleichtern, sie sind jedoch nicht für Anfänger zu empfehlen.

1. Werfen wir zunächst einen Blick auf die ABP-Architektur

ABP-Einführungsreihe (3) – Entitäten auf der Domänenebene erstellen

Die Domänenschicht ist die Geschäftsschicht und der Kern eines Projekts Regeln sollten in der Domänenschicht durchgeführt werden.
Entität: Entität stellt Daten und Vorgänge in der Geschäftsdomäne dar und wird in der Praxis verwendet, um sie in einer Datenbanktabelle abzubilden.
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.
Domänendienst: Wenn die verarbeiteten Geschäftsregeln zwei (oder mehr) Entitäten umfassen, sollten sie in der Domänendienstmethode geschrieben werden.
Domänenereignis: Domänenereignisse können ausgelöst werden, wenn bestimmte Situationen in der Domänenschicht auftreten, und sie können an den entsprechenden Stellen erfasst und verarbeitet werden.
Arbeitseinheit: Arbeitseinheit ist ein Entwurfsmuster, das zum Verwalten einer Liste von Geschäftsobjekten verwendet wird, die geändert wurden (z. B. hinzugefügt, gelöscht, aktualisiert usw.). Es ist für die Koordinierung der Persistenz- und Parallelitätsprobleme dieser Geschäftsobjekte verantwortlich.

2. Schauen wir uns die Lösung noch einmal an

ABP-Einführungsreihe (3) – Entitäten auf der Domänenebene erstellen

Nachdem wir festgestellt hatten, welcher Ebene jedes Projekt in der Lösung entspricht, begannen wir mit der Erstellung der Task-Entität.

3. Erstellen Sie Task-Entitäten

1. Erstellen Sie den Task-Ordner und die Task-Entitätsklasse
2 implementiert die IEntity-Schnittstelle; und die IEntity-Schnittstelle ist eine generische Schnittstelle, die den Primärschlüssel-ID-Typ durch Generika angibt. Der Standard-Primärschlüsseltyp von Entity ist der int-Typ.
Beim Erstellen einer Aufgabe müssen Sie unbedingt die Erstellungszeit einsparen. Diese allgemeine Funktion kann durch die Implementierung von IHasCreationTime im Audit-Modul erreicht werden. Der Code lautet wie folgt:

namespace LearningMpaAbp.Tasks{   
 public class Task : Entity, IHasCreationTime    
 {       
 public const int MaxTitleLength = 256;        
 public const int MaxDescriptionLength = 64 * 1024;//64kb                
 public long? AssignedPersonId { get; set; }        
 [ForeignKey("AssignedPersonId")]        
 public User AssignedPerson { get; set; }        
 [Required]        
 [MaxLength(MaxTitleLength)]        
 public string Title { get; set; }        
 [Required]        
 [MaxLength(MaxDescriptionLength)]        
 public string Description { get; set; }        
 public TaskState State { get; set; }        
 public DateTime CreationTime { get; set; }        
 public Task()        
 {            
 CreationTime = Clock.Now;            
 State = TaskState.Open; ;        
 }        
 public Task(string title, string description = null) : this()        
 {            
 Title = title;            
 Description = description;       
  }    
  }    
  public enum TaskState : byte    
  {        
  Open = 0,        Completed = 1    
  }}

, der die TaskState-Statusaufzählung definiert. Und das Navigationsattribut „AssignedPerson“ hinzugefügt, um einem Benutzer zugewiesene Aufgaben zu speichern. Die Funktionen [Required] und [MaxLength] werden zur Eingabeüberprüfung verwendet.

3. Nach der Definition der Entität müssen wir das der Entität entsprechende DbSet in DbContext definieren, um die Code First-Datenmigration anzuwenden. Suchen Sie unsere grundlegende Serviceschicht, d. h. in dem Projekt, das mit EntityFramework endet, suchen Sie die DbContext-Klasse und fügen Sie den folgenden Code hinzu

//TODO: Define an IDbSet for your Entities... public IDbSet<Task> Tasks { get; set; }

4. Führen Sie die Code First-Datenmigration durch.

Öffnen Sie die Paketmanagerkonsole und wählen Sie das Projekt, das Entityframework entspricht, als Standardprojekt aus. Führen Sie Add-Migration Add_Task_Entity aus, um eine Migration zu erstellen.

Nach erfolgreicher Erstellung wird im Ordner „Migrationen“ eine Klassendatei im Format „time_Add_Task_Entity“ erstellt. Wenn wir genau hinsehen, werden wir feststellen, dass sich unter dem Ordner „Migrationen“ ein Ordner „SeedData“ befindet. Wie der Name schon sagt, werden die Klassen in diesem Ordner hauptsächlich zum Voreinstellen von Seed-Daten verwendet. Wir können uns auf die Schreibmethode vorhandener Klassen beziehen, um zwei Aufgaben voreinzustellen. Erstellen Sie die DefaultTestDataForTask-Klasse mit dem folgenden Code:

namespace LearningMpaAbp.Migrations.SeedData{public class DefaultTestDataForTask{    
private readonly LearningMpaAbpDbContext _context;    
private static readonly List<Task> _tasks;    
public DefaultTestDataForTask(LearningMpaAbpDbContext context)    
{        
_context = context;    
}    
static DefaultTestDataForTask()    
{        
_tasks = new List<Task>()        
{            
new Task("Learning ABP deom", "Learning how to use abp framework to build a MPA application."),            
new Task("Make Lunch", "Cook 2 dishs")        
};    
}   
public void Create()    
{      
  foreach (var task in _tasks)       
   {          
    _context.Tasks.Add(task);         
       _context.SaveChanges();      
         }    
         }
         }
         }

Fügen Sie dann in der Seed-Methode in der Configuration-Klasse den folgenden Code hinzu.

new DefaultTestDataForTask(context).Create();

Geben Sie in der Paketmanagerkonsole „Update-Database“ ein und drücken Sie die Eingabetaste, um die Migration durchzuführen. Überprüfen Sie nach erfolgreicher Ausführung die Datenbank und stellen Sie sicher, dass die Tabelle „Aufgaben“ erfolgreich erstellt wurde und bereits zwei Testdaten in der Tabelle vorhanden sind.

An diesem Punkt wurde die Task-Entitätsklasse erfolgreich 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 (3) – der Inhalt der Erstellung von Entitäten in der Domänenebene. Bitte achten Sie auf die chinesische PHP-Website (www.php.cn)!


Stellungnahme:
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