0

Ich habe die ASP.NET MVC mit AngularJS und Entity Framework, Modul Null Probe heruntergeladen. Ich habe eine Entität mit dem Namen DivePlan hinzugefügt, die momentan nur einen String-Eigenschaftsnamen enthält.Aspnetboilerplate - AngularJS erreicht den AppService nicht?

enter image description here

namespace PlanMyDive.DivePlan 
{ 
    public class DivePlan : Entity 
    { 
     public virtual string Name { get; set; } 


     public DivePlan() { } 
     public DivePlan(string name) 
     { 
      this.Name = name; 
     } 

    } 
} 

Dann habe ich einen Dienst in der Anwendungsschicht:

enter image description here

namespace PlanMyDive.DivePlan.Dto 
{ 
    [AutoMapTo(typeof(DivePlan))] 
    public class CreateDivePlanInput 
    { 
     [Required] 
     public string Name { get; set; } 

    } 
} 

namespace PlanMyDive.DivePlan 
{ 
    public class DivePlanAppService : IDivePlanAppService 
    { 
     private readonly IRepository<DivePlan> _divePlanRepository; 

     public DivePlanAppService(IRepository<DivePlan> personRepository) 
     { 
      _divePlanRepository = personRepository; 
     } 

     public void CreateDivePlan(CreateDivePlanInput input) 
     { 
      var diveplan = input.MapTo<DivePlan>(); 
      _divePlanRepository.Insert(diveplan); 
     } 
    } 
} 

namespace PlanMyDive.DivePlan 
{ 
    public interface IDivePlanAppService : IApplicationService 
    { 
     void CreateDivePlan(CreateDivePlanInput input); 
    } 
} 

Schließlich habe ich eine Seite Pläne in den Angular Routen und umgesetzt wie folgt hinzugefügt:

enter image description here

(function() { 
    angular.module('app').controller('app.views.plans.plan', [ 
     '$scope', '$modal', 'abp.services.app.divePlan', 
     function ($scope, $modal, divePlanService) { 
      var vm = this; 

      vm.divePlan = { 
       name: 'MyDivePlan' 
      }; 


      vm.createNewDivePlan = function() { 
       abp.ui.setBusy(); 
       divePlanService.createDivePlan(vm.divePlan); 
       abp.ui.clearBusy(); 
      }; 
     } 
    ]); 
})(); 

@using PlanMyDive.DivePlan 
<div ng-controller="app.views.plans.plan as vm"> 
    <h1>Welcome to your DivePlan</h1> 
    <div class="row"> 
     <div class="col-md-12"> 
      <form name="planCreateForm" role="form" novalidate class="form-validation"> 
       <button type="button" class="btn btn-default" ng-click="vm.createNewDivePlan()">Create Plan</button> 
      </form> 
     </div> 
    </div> 
    <div class="row"> 
     <table class="table"> 
      <thead> 
       <tr> 
        <th>DivePlan Name</th> 
        <th>Autre</th> 
       </tr> 
      </thead> 
      <tbody> 
       <tr ng-repeat="plan in vm.plans"> 
        <td>{{plan.name}}</td> 
        <td>{{plan.name}}</td> 
       </tr> 
      </tbody> 
     </table> 
    </div> 
</div> 

Ich habe einen Haltepunkt in meinem JS-Code an der Linie divePlanService.createDivePlan (vm.divePlan); und einen Haltepunkt in meinem DivePlanAppService, wenn die Funktion public void CreateDivePlan (CreateDivePlanInput-Eingabe) aufgerufen wird. Das Problem, das ich erhalte, ist, dass der JS-Code ausgeführt wird, aber die DivePlanAppService-Funktion CreateDivePlan nie ausgeführt wird, oder bei Pause wird es nie an meinem Haltepunkt unterbrochen. Die Benutzeroberfläche zeigt Folgendes: enter image description here

Ich habe versucht, den Code zu vereinfachen, so viel wie ich konnte. Deshalb macht die Service-Methode bisher nicht viel. Ich habe bemerkt, dass der Konstruktor von DivePlanAppService nie aufgerufen wird, während der Konstruktor von UserAppService aufgerufen wird, wenn ich zur/#/Benutzer-Seite navigiere.

Was habe ich vermisst? Stelle ich den CreateDivePlanInput nicht im richtigen Format bereit? Ich habe versucht zu kopieren, wie TenantAppService funktioniert. Danke im Voraus.

EDIT: Ich ging und Debug in der CastleDynamicInterceptor zu graben und fand diese Fehlermeldung in Bezug auf meine DivePlanAppService:

Einige Abhängigkeiten dieser Komponente nicht statisch aufgelöst werden können. 'PlanMyDive.DivePlan.DivePlanAppService' wartet auf folgende Abhängigkeiten: - Dienst 'Abp.Domain.Repositories.IRepository`1 [[PlanMyDive.DivePlan.DivePlan, PlanMyDive.Core, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null]] 'welches nicht registriert wurde.

Antwort

1

Ich denke Diveplan Einheit nicht auf DbContext registriert.

0

Sie haben Diveplan zu DbContext

public class PlanMyDiveDbContext : AbpDbContext 
{ 
    //other entities  
    public virtual IDbSet<DivePlan> DivePlans { get; set; } 

    ... 
} 
hinzufügen
Verwandte Themen