0

Ich erstelle eine Web-API, um alle Transaktionen mit Objekt des Landes zu erhalten, Währung, die hier Fremdschlüssel ist.Daten durch Entitätsmodell erhalten Relationale Tabellen in ASP.NET WEB API

Ich habe einen Controller mit Methode

[Route("transactions")] 
     public IHttpActionResult GetCountries() 
     { 
      return Ok(db.PAY_TRANSACTION); 
     } 

Das ist mein Entity Model

public partial class PAY_TRANSACTION 
    { 
     public PAY_TRANSACTION() 
     { 
      this.PAY_BATCH_TRANSACTION = new HashSet<PAY_BATCH_TRANSACTION>(); 
      this.PAY_TRANSACTION_DETAIL = new HashSet<PAY_TRANSACTION_DETAIL>(); 
     } 

     public int ID { get; set; } 
     public int CMN_INSTITUTE_ID { get; set; } 
     public int USER_ID { get; set; } 
     public int MAS_COUNTRY_ID { get; set; } 
     public int CMN_CURRENCY_ID { get; set; } 
     public double AMOUNT_PAYING { get; set; } 
     public double EXCHANGE_RATE { get; set; } 
     public double AMOUNT_FX { get; set; } 
     public System.DateTime CREATED_ON { get; set; } 
     public int CREATED_BY { get; set; } 
     public System.DateTime UPDATED_ON { get; set; } 
     public int UPDATED_BY { get; set; } 
     public bool IS_DELETED { get; set; } 
     public bool IS_APPROVED { get; set; } 
     public int VERSION_NO { get; set; } 

     public virtual CMN_CURRENCY CMN_CURRENCY { get; set; } 
     public virtual CMN_INSTITUTE CMN_INSTITUTE { get; set; } 
     public virtual MAS_COUNTRY MAS_COUNTRY { get; set; } 
     public virtual ICollection<PAY_BATCH_TRANSACTION> PAY_BATCH_TRANSACTION { get; set; } 
     public virtual ICollection<PAY_TRANSACTION_DETAIL> PAY_TRANSACTION_DETAIL { get; set; } 
    } 

Als ich nach Methoden, bitte ich diesen Fehler:

Invalid column name 'MAS_COUNTRY_ID1'.\r\nInvalid column name 'CMN_INSTITUTE_ID1'.\r\nInvalid column name 'CMN_CURRENCY_ID1'.

Als ich eingestellt [ ForeignKey ("CMN_INSTITUTE_ID")], [ForeignKey ("MAS_COUNTRY_ID")], [ForeignKey ("CMN_CURR ENCY_ID „)], erhalte ich diese Antwort

{ 
    "ID": 7, 
    "CMN_INSTITUTE_ID": 2, 
    "USER_ID": 3, 
    "MAS_COUNTRY_ID": 1, 
    "CMN_CURRENCY_ID": 2, 
    "AMOUNT_PAYING": 123, 
    "EXCHANGE_RATE": 1.2, 
    "AMOUNT_FX": 22, 
    "CREATED_ON": "2017-01-18T17:50:16.993", 
    "CREATED_BY": 0, 
    "UPDATED_ON": "2017-01-18T17:50:16.993", 
    "UPDATED_BY": 0, 
    "IS_DELETED": false, 
    "IS_APPROVED": false, 
    "VERSION_NO": 0, 
    "CMN_CURRENCY": null, 
    "CMN_INSTITUTE": null, 
    "MAS_COUNTRY": null, 
    "PAY_BATCH_TRANSACTION": [], 
    "PAY_TRANSACTION_DETAIL": [] 
} 

die meine MAS_COUNTRY zeigt, CMN_INSTITUTE, CMN_CURRENCY NULL

Antwort

1

Diese kontrollierte Unternehmen erst seine (Lazy Loading) zugegriffen geladen werden. In Ihrem Fall greifen Sie nicht auf diese Entitäten zu, bevor Sie sie zurücksenden. Daher werden diese Eigenschaften niemals geladen. Sie können Eager Load diese Entitäten in Ihrem Fall db.PAY_TRANSACTION.Include (t=> t.MAS_COUNTRY).Include (t=>t.CMN_INSTITUTE).Include (t=>t.CMN_CURRENCY)

+1

Ich erhalte Fehler selbstbeziehende Schleife mit Typ erkannt ‚AspNetIdentity.Models.PAY_TRANSACTION‘. .? Pfad ‚CMN_CURRENCY.PAY_TRANSACTION‘ ", –

+0

Compile Zeit oder Laufzeitfehler – Developer

+0

Ich erhalte Laufzeitfehler –