1

MVC5 Intranet-Site. In einer Ansicht werden zwei Datensätze an die Ansicht gesendet. Dies zeigt die Daten korrekt an. Aber die Daten sind "falsch". Hier ist die C# -CodeMVC5-Modellgruppierungsergebnisse nicht korrekt

List<object> myList = new List<object>(); 
     myList.Add(db.hw_poapp_VoucherDetail_vw.Where(a => a.trx_ctrl_num == id).ToList()); 
     myList.Add(db.hw_poapp_VoucherDetailNotes_vw.Where(a => a.trx_ctrl_num == id).ToList()); 
     // try this incase it's a Lambda thing 
     var notes = from d in db.hw_poapp_VoucherDetailNotes_vw 
        where d.trx_ctrl_num == id 
        select d; 

     return View(myList); 

I SQL Profiler kann die SQL fangen verwendet wird und es in SQL Management Studio ausführen, um die Ergebnisse als

trx_ctrl_num  invoice_link   note 
VO205164   X:\SOME.pdf   Note 1 
VO205164   X:\XXXXX12345.txt  Note 1 
VO205164   X:\Tiny 2.jpg   Note 1 

Eine einzelne Transaktion zurück hat drei angebrachten Links , jeder Link hat eine Notiz

Wenn ich das C# debuggen, sind die Ergebnisse nicht wie erwartet. Debugging der zweiten Liste (oder die var Note aus Verzweiflung) Ich erwarte 3 verschiedene Ergebnisse, aber es erscheint, weil das 'Note' Feld identisch ist, sind die drei Ergebnisse identisch. , d. H. Drei Ergebnisse, aber die gesamte erste Zeile aus den Ergebnissen. Wenn das Feld ‚Anmerkung‘ eindeutige Daten enthält, dann bekommen die Linien in die Liste gesetzt, wie erwartet den beigefügten jpg für Bildschirm-Dumps des From Debugging code

Die Modellklasse debug Siehe ich Daten, wie dies für Aussehen bekommen

public partial class hw_poapp_VoucherDetailNotes_vw 
{ 
    [Key] 
    [Display(Name = "Voucher No:")] 
    public string trx_ctrl_num { get; set; } 
    [Display(Name = "Voucher Link")] 
    public string invoice_link { get; set; } 
    [Display(Name = "Note:")] 
    public string note { get; set; } 
} 

ich habe versucht, mit und ohne Schlüsselwert So in der Zusammenfassung, die SQL, die die richtigen Daten auswählt ausgefuehrt werden. Die Liste, ob Lambda oder LINQ verwendet nur hat die erste Zeile dreimal wiederholt Die Ansicht zeigt die fehlerhaften Daten korrekt an. Jede Hilfe dankbar erhalten

+0

Was ist das Tabellen-Setup für die Notizen? Hat es die Transaktions-ID? –

+0

Die Ansicht, die ich betrachte, stammt aus einem einzigen Tisch. Just for fun (?) Änderte ich den Blick auf \t _Select 'VO205164' trx_ctrl_num, 'Link 1' INVOICE_LINK, '' note \t Vereinigung \t select 'VO205164' trx_ctrl_num 'Link 2' INVOICE_LINK, '' note \t Union \t Wählen Sie 'VO205164' trx_ctrl_num, 'link 3' invoice_link, '' note_. Und das Ergebnis war das gleiche, das SQL, das von MVC generiert und über SQL Profiler erfasst und in SQL Management Studio ausgeführt wird, gibt die erwarteten Ergebnisse zurück, aber das Datenmodell wiederholt die erste Verknüpfung. Bitte beachten Sie, dass es sich um eine alte existierende Datenbank handelt. –

+0

FYI, ich habe die Ansicht in eine Stored Procedure geändert, und das erhält die Daten korrekt und es wird korrekt auf dem Ansichtsformular angezeigt. Ich werde versuchen, auf Visual Studio 2015 zu aktualisieren und sehen, ob das eine Änderung vornimmt –

Antwort

0

OK, so war es alles auf die Entity Keys auf dem Modell. Ich habe das * .edmx-Diagramm geöffnet und rechts auf jedes der drei Felder dieser Ansicht geklickt und sie auf Entity Key gesetzt, um einen eindeutigen Schlüssel zu erstellen. Ich dachte, dies in der Model-Klasse zu tun würde dies tun; meine Unerfahrenheit. Das Projekt neu erstellt und jetzt läuft es OK. Dieser 'Entitätsschlüssel' ändert die Modellklasse in keiner Weise, nur die edmx-Datei (es erscheint). Da der Schlüssel, den ich hatte (trx_ctrl_num), über die drei Datensätze hinweg jedoch nicht eindeutig war, wurde er "verwirrt". Danke