Dynamische Tabellennamen in Linq to SQL
Hallo alle ich habe eine schreckliche Datenbank ich muss Arbeit mit und linq to sql ist die Möglichkeit, im nehmen zum abrufen von Daten aus. anywho, im Versuch, die Wiederverwendung einer Funktion durch das werfen in eine andere Tabelle mit dem Namen basierend auf einer Benutzer-Auswahl-und es gibt keine Möglichkeit, meine Kenntnisse zu ändern, die TEntity oder Tabelle<> in ein DataContext-Abfrage.
Dies ist mein Aktueller code.
public void GetRecordsByTableName(string table_name){
string sql = "Select * from " + table_name;
var records = dataContext.ExecuteQuery</*Suppossed Table Name*/>(sql);
ViewData["recordsByTableName"] = records.ToList();
}
Möchte ich zum Auffüllen meiner ViewData mit Enumerable-records.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie den Aufruf der ExecuteQuery-Methode des DataContext-Instanz. Sie möchten, rufen Sie die überlastung, übernimmt eine Art Instanz, die hier beschrieben werden:
http://msdn.microsoft.com/en-us/library/bb534292.aspx
Angenommen, Sie haben einen Typ zugeordnet ist richtig für die Tabelle, vorbei, der Typ instance-Typ und die SQL wird Sie geben, was Sie wollen.
Als casperOne schon beantwortet, können Sie
ExecuteQuery
Methode zuerst überlast (der, der fragt, für die ein Typ-parameter). Da hatte ich ein ähnliches Problem und Sie gebeten, ein Beispiel, hier ist einer:Achten Sie auf
YourType
da haben Sie einen Typ definieren, der einen Konstruktor (es können nicht abstract oder interface). Ich würde vorschlagen, Sie erstellen einen benutzerdefinierten Typ, der hat genau die gleichen Attribute, die Ihre SQL-Tabelle. Wenn Sie das tun, werden Sie die ExecuteQuery-Methode wird automatisch 'Spritzen' die Werte aus Ihrer Tabelle, um Ihre benutzerdefinierten Typ. So:So, das auf dem früheren Beispiel, die ExecuteQuery-Methode wäre: