0

Ich erstelle Anwendung mit Web API und NHibernate ORM. Ich habe ein Problem beim Aufruf von Methoden abrufen. Es gibt viele Beziehungen in NHibernate Fluent Mapping. Zum Beispiel:Web API Benutzerdefinierte Serialisierung mit NHibernate Antwort

public class Case : GuidEntityBase 
{ 
    public virtual CaseType CaseType { get; set; } 
    public virtual string CaseNumber { get; set; } 
    public virtual DateTime CaseDate { get; set; } 
    public virtual IList<Document> Documents { get; set; } 

    public Case() 
    { 
     Documents = new List<Document>(); 
    } 
} 

public class Document : GuidEntityBase 
{ 
    public virtual DocumentType DocumentType { get; set; } 
    public virtual string DocumentNumber { get; set; } 
    public virtual DateTime DocumentDate { get; set; } 

    public virtual Case Case { get; set; } 
} 

Also, wenn ich rufe folgende HttpGet

[Route("api/document/GetItem/{id}")] 
    [HttpGet] 
    public Document GetItem(string Id) 
    { 
     var response = service.GetItem(Id); 

     //response.Value.Case = null; 

     return response.Value; 
    } 

I Dokumentendaten, aber auch ich Sametime Falldaten zu bekommen. Wie kann ich diesen Prozess filtern? Ich schrieb response.Value.Case = null;, aber es ist kein guter Weg zur Lösung.

+1

Warum Lazy Loading nicht ausschalten? Ich bin kein NHibernate-Benutzer, aber ich bin mir sicher, dass es eine Option dafür gibt. http://StackOverflow.com/Questions/3142845/Eager-Loading-Use-Fluent-Nhibernate-Nhibernate-Automapping – Dennis

+0

Ich arbeite nicht. –

Antwort

3

Es ist eine schlechte Idee, Entitäten zu verschicken, was Sie tun sollten, ist ein Modell basierend auf Ihrer Ansicht zu erstellen, füllen Sie es und sendete es über.

public class DocumentDto 
    { 
     public Guid Id { get; set; } 
     public DocumentType DocumentType { get; set; } 
     public string DocumentNumber { get; set; } 
     public DateTime DocumentDate { get; set; } 
    } 

    [Route("api/document/GetItem/{id}")] 
    [HttpGet] 
    public DocumentDto GetItem(string Id) 
    { 
     var doc = service.GetItem(Id).Value; 
     return new DocumentDto(){ 
      Id = doc.Id, 
      //set other properties from doc 
     }; 
    }