2016-06-11 3 views
0

Ich möchte Daten aus zwei Tabellen in einer Ansicht mit Hilfe einer gespeicherten Prozedur anzeigen. Ich stehe beim Abrufen von Datensätzen fest, kann keine Ansichtsmodellklasse in DbSet als falsch schreiben, habe meinen Code gepostet.Gespeicherte Prozedur verwenden, um Daten aus mehreren Spalten abzurufen und in einer Ansicht anzuzeigen

Und auch ich möchte Daten von der Steuerung in stark typisierten anzeigen übergeben.

Weitere Informationen finden Sie im Abschnitt zum Kurzschließen.

enter image description here

Die Anzahl der Daten korrekt sind, aber es gibt darin keine Daten.

Modell

public class tblStudents 
{ 
    [Key] 
    public int Id { get; set; } 

    public string Name { get; set; } 
    public DateTime? CreatedDate { get; set; } 
} 

public class tblStudentDetails 
{ 
    [Key] 
    public int StudentId { get; set; } 

    public string Address { get; set; } 
    public DateTime? CreatedDate { get; set; } 
} 

//This class contains columns from both the tables 
public class AllDataa 
{ 
    public class Dataa 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public string Address { get; set; } 
    } 
}  

Ansichtsmodell:

public class VMStudentDetails 
{ 
    public List<tblStudents> students { get; set; } 

    public tblStudentDetails StudentDetails { get; set; } 

    public IEnumerable<AllDataa> AllData { get; set; } 
} 

Stored Procedure:

CREATE PROCEDURE usp_StudentDetail 
AS 
BEGIN 
    SELECT 
     S.Name, SD.Address 
    FROM 
     tblStudents S 
    INNER JOIN 
     tblStudentDetails SD ON S.Id = Sd.StudentId 
END 

-Controller

public ActionResult Index() 
{ 
     var model = new MVCLearning.Models.VMStudentDetails(); 
     //What to write in Sqlquery? 
     //model.AllData = db.Database.SqlQuery<>("usp_StudentDetail").ToList(); 
     //This is not working the data is not coming in Alldata 
     model.AllData = db.Database.SqlQuery<AllDataa>("usp_StudentDetail").ToList(); 
      return View(model); 
} 
+0

Es sei denn, es gibt ein anderes Problem aufgrund falscher Parameter- oder Namenskonflikte. db.Database.SqlQuery sollte funktionieren –

+0

Sir ist eine normale SQL-Select-Aufruf, kein Parameter ist nicht beteiligt. – Dave

+0

Ich würde Ihnen empfehlen, die zugrunde liegenden SQL von Entität Framework generiert –

Antwort

0

Wenn Sie Code ersten Ansatz verwenden, dann würde der empfohlene Weg, wie

from student in tblStudents 
Join details in tblStudentDetails 
On student.id equals details.studentid 
Select new AllData() {Id =student.id, name = student. Name, Address =details.Address} 

unter

sowohl die Tabellen durch den Code zu verbinden sein Dieses ähnlichen sind Sie

+0

Ja, es ist Ähnlich wie es aber die Datenbank ist fertig, das ist nur eine kurze Beschreibung in Echtzeit mein SP wird kompliziert sein, will nur wissen, wie man die Daten im Modell bekommen. – Dave

0

Vielen Dank für Ihre Unterstützung geschrieben SP haben ich behebt es das Problem war in der AllDataa Klasse war da eine andere Klasse, weshalb es nicht funktionierte.

public class AllDataa 
{ 
     public int Id { get; set; } 

     public string Name { get; set; } 

     public string Address { get; set; } 

    } 
Verwandte Themen