Каков наилучший способ публикации реляционных данных в сложной модели данных с использованием Angular и Net Core?

Как лучше всего разместить реляционные данные в сложной модели данных с использованием Angular и Net Core?

Пытаясь выяснить лучший способ POST-реляционных данных, я также задаюсь вопросом, является ли способ обработки бэкэнда лучшим способом.

Есть ли способ POST за один единственный шаг? Или я должен создать службу или канал для вызова того, что было написано в первой таблице, а затем отправить относительные данные в другую? Это была бы моя лучшая ставка прямо сейчас, но для меня это звучит слишком продуманно и чрезмерно.

Я пробовал много способов опубликовать, но я не могу понять, что происходит, «относительный» БД остается пустым, хотя у меня есть Icollection в ядре. (см. код).

Вот модель бэкэнда в netcore 2.2:

 MainList { public Guid JdbTdcMainListId { get; set; } public string JTSubject { get; set; } public string JTDescription { get; set; } public bool JTImportant { get; set; } public bool JTPertinentToReporting { get; set; } public string JTCreatedBy { get; set; } public string JTLastEditBy { get; set; } public DateTime JTEntryCreated { get; set; } public DateTime JTEntryModified { get; set; } public Guid JTCatId { get; set; } public Guid JTSubCatId { get; set; } public Guid JTBatId { get; set; } public Guid JTReportId { get; set; } public Guid JTReturnId { get; set; } public JTCat JTCats { get; set; } public JTSubCat JTSubCats { get; set; } public JTRapport JTRapports { get; set; } public JTRetour JTRetours { get; set; } public JTBatphone JTBatphones { get; set; } } 

Так что это будет основной список, в который я хочу документировать все связанные данные с записями в таблицах, на которые ссылаются внизу. Cat {amp}amp; SubCat связаны друг с другом для системы категоризации. Есть некоторые отчетные данные и другие вещи.

Вот как я устанавливаю отношения с MainList в JTCats:

 JTCat { public Guid JTCatId { get; set; } public string JTCatNom { get; set; } public string JTCatDescription { get; set; } public bool JTCatHasTextTemplate { get; set; } public string JTCatTextTemplate { get; set; } public bool JTCatActive { get; set; } public ICollection{amp}lt;JTMainList{amp}gt; JTMainList { get; set; } } 

Использование шаблона репозитория и автоматически устанавливаемых лесов контроллеров в vs studio 2017.

И тогда моя угловая модель выглядит так:

 import { JdbTdcMainList } from './jdbTdcMainList.model'; export interface JTCat { jTCatId?: string; jTCatNom: string; jTCatDescription: string; jTCatHasGabarit: boolean; jTCatActif: boolean; jTMainList: JTMainList[]; } 

Вот мой угловой шаблон и компонент, можно использовать некоторую помощь при форматировании проверки:

 {amp}lt;div class="container-fluid"{amp}gt;{amp}lt;div class="row"{amp}gt; {amp}lt;form [formGroup]="MainGroup" (ngSubmit)="send()" novalidate{amp}gt; {amp}lt;input type="hidden" readonly formControlName="Data1" id="Data1" class="form-control"/{amp}gt; {amp}lt;td colspan="3"{amp}gt;{amp}lt;input type="hidden" readonly formControlName="Data2" id="Data2" class="form-control"/{amp}gt; {amp}lt;td colspan="3"{amp}gt;{amp}lt;input type="hidden" readonly formControlName="Data3" id="Data3" class="form-control"/{amp}gt; {amp}lt;td colspan="3"{amp}gt;{amp}lt;input type="hidden" readonly formControlName="Data4" id="Data4" class="form-control"/{amp}gt; {amp}lt;div formGroupName="child"{amp}gt; {amp}lt;table{amp}gt; {amp}lt;tr{amp}gt; {amp}lt;td rowspan="23"{amp}gt; {amp}lt;select size="35" formControlName="ChildData1" id="ChildData1" class="form-control form-control-sm"{amp}gt; {amp}lt;option value="06:00"{amp}gt;06:00{amp}lt;/option{amp}gt; {amp}lt;option value="06:30"{amp}gt;06:30{amp}lt;/option{amp}gt; etc. {amp}lt;/select{amp}gt; {amp}lt;/td{amp}gt; {amp}lt;tr{amp}gt; {amp}lt;th{amp}gt;ChildData2 :{amp}lt;/th{amp}gt; {amp}lt;th{amp}gt;ChildData3 :{amp}lt;/th{amp}gt; {amp}lt;/tr{amp}gt; {amp}lt;tr{amp}gt; {amp}lt;td{amp}gt;{amp}lt;input type="number" size="3" value="0" formControlName="ChildData2" id="ChildData2" class="form-control form-control-sm" /{amp}gt;{amp}lt;/td{amp}gt; {amp}lt;td{amp}gt;{amp}lt;input type="number" size="3" value="0" formControlName="ChildData3" id="ChildData3" class="form-control" /{amp}gt;{amp}lt;/td{amp}gt; {amp}lt;/tr{amp}gt; {amp}lt;tr{amp}gt; {amp}lt;th{amp}gt;ChildData4{amp}lt;/th{amp}gt; {amp}lt;th{amp}gt;ChildData5{amp}lt;th{amp}gt; etc.. {amp}lt;/table{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;/form{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;app-success-modal [modalHeaderText]="'Success message'" [modalBodyText]="'Action completed successfully'" [okButtonText]="'OK'" (redirectOnOK)="redirectToRapportList()"{amp}gt; {amp}lt;/app-success-modal{amp}gt; {amp}lt;app-error-modal [modalHeaderText]="'Error message'" [modalBodyText]="errorMessage" [okButtonText]="'OK'"{amp}gt; {amp}lt;/app-error-modal{amp}gt; 

И вот компонент, как мне проверить и выполнить POST?

 import { Component, OnInit } from '@angular/core'; import { FormGroup, FormControl, FormBuilder } from '@angular/forms'; import { RepositoryService } from 'src/app/shared/services/repository.service'; import { ErrorHandlerService } from 'src/app/shared/services/error-handler.service'; import { Router } from '@angular/router'; import { CreateRapport } from '../../_interfaces/jdbtdc/CreateRapport.model'; import { formGroupNameProvider } from '@angular/forms/src/directives/reactive_directives/form_group_name'; import { MainListRapportCreate } from 'src/app/_interfaces/jt/mainlistRapportCreate.model'; @Component({ selector: 'app-rapport-create', templateUrl: './rapport-create.component.html', styleUrls: ['./rapport-create.component.css'] }) export class RapportCreateComponent implements OnInit { public errorMessage: string = ''; public createJdbRapportForm: FormGroup; constructor(private repository: RepositoryService, private errorHandler: ErrorHandlerService, private router: Router, private fb: FormBuilder) { } ngOnInit() { this.createJdbRapportForm = this.fb.group({ Data1: ['ReportTitle'], Data2: ['ReportDescription'], Data3: ['Identity_Data_From_IIS'], Data4: new Date(), child: this.fb.group({ ChildData1: new Date(), ChildData2: ['0'], Etc. }) }); } public send() { if (this.createJdbRapportForm['controls'].child['controls'].valid) { this.executeEntryCreation() } } private executeEntryCreation(createJdbRapportForm) { let EntryCreate: CreateRapport = { jdbTdcSujet: createJdbRapportForm.jdbTdcSujet, jdbTdcDescription: createJdbRapportForm.jdbTdcDescription, jdbTdcCreatedBy: createJdbRapportForm.jdbTdcCreatedBy, jdbTdcEntryCreated: createJdbRapportForm.jdbTdcEntryCreated child: jdbTdcRapportEntryDateTime: createJdbRapportForm.jdbTdcRapportEntryDateTime, 

^^ Вот где я понятия не имею, что делать, чтобы выполнить это. Как объединить ребенка с основной формой перед выполнением процедуры POST?

Но вот интерфейс, который я использую:

 export interface CreateRapport { Data1: string; Data2: string; Data3: string; Data4: string; etc. child: [{ ChildData1: string; ChildData1: number; ChildData1: number; ChildData1: number; etc. }]; } 
Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector