2016-04-27 11 views
1

In diesem Thread How to use raw normal sql in ASP.NET MVC without linq?Wie in einer ASP.NET MVC-Datei Daten aus einer Raw-SQL-Abfrage den Model-Eigenschaften zugeordnet werden?

Ich weiß, wie Sie DbContext verwenden, um Daten Model Eigenschaften zuzuordnen und sie in Razor View zu verwenden. Manchmal muss ich jedoch eine komplexe Raw-SQL-Abfrage verwenden, um Daten aus vorhandenen DB-Tabellen abzurufen. Von dem obigen Link habe ich die Idee bekommen. SQL to Model, das ist genau das, was ich brauche. Aber meine Frage ist, Was muss ich in der DbContext-Klasse schreiben? Diese

ist aus der obigen Referenz

static ArticlesDataContext dc = new 
ArticlesDataContext(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 

Und im Controller (... glaube ich),

var arts = dc.ExecuteQuery<Art>(@"Select * from articles"); 

Ich denke, die ArticlesDataContext Klasse ist so etwas wie dieses

public class ArticlesDataContext : DbContext 
{ 
    public ArticlesDataContext() : base("name=ConnectionString") 
    { 
    } 

    public DbSet<Article> Articles { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 
     ... 
     // something here to map the DB table columns 
    } 
} 

Wenn ich die rohe SQL-Abfrage in Controller ausführen muss, um Daten zu erhalten, Was mache ich mit der DbContext-Klasse, die Daten mit EF bekommen soll? Ich bin verwirrt.

Oh ja, und, Was macht das "@" vor der SQL-Anweisung?

Ich bin sehr neu in ASP.NET MVC, hoffe, ich habe meine Frage klar gemacht. Danke.

+0

@ bevor eine Zeichenfolge in C# zu der Stelle kommt, an der Sie kein Zeichen außer dem doppelten Anführungszeichen verwenden müssen. –

+0

Einige Optionen: https://msdn.microsoft.com/en-us/data/jj592907.aspx –

+0

@TimothyKanski Thx! –

Antwort

0

DBContext wird verwendet, um eine Datenentität (Ihre Datenbanktabelle) einem Modell zuzuordnen (ein einfaches altes C# -Objekt, das Sie erstellt haben). Obwohl Sie SQL verwenden, möchten Sie immer noch ein Modell erstellen, das die Ergebnisse Ihrer SQL-Abfrage enthält. Im Moment definieren Sie "Künste" als Ihre Liste der Ergebnisse aus der Abfrage. Daher wird Kunst wahrscheinlich vom Typ IEnumerable<art> sein, wobei art der Name des von Ihnen erstellten Modells ist. Führen Sie jetzt in Ihrem DBContext beispielsweise Folgendes aus:

@