2016-09-16 5 views
0

Ich möchte Datenbank abrufen und Liste der String-Arrays abrufen. Ich mache ..Entity Framework - Benutzerdefinierte Abfrage zu mehrdimensionalen Array?

List<string[]> results = new List<string[]>(); 
results = dbContext.Database.SqlQuery<string[]>("select one, two from myTable").ToList(); 

Ich habe eine Ausnahme

"The result type 'System.String[]' may not be abstract and must include a default constructor." 

Aber ich will keine neuen abstrakten Typ erstellen. Es ist nur eine einfache Karte. Zwei Spalten.

Was ist der beste Weg, um das zu erreichen?

Antwort

0

Eine Klasse, die anstelle von TElement verwendet wird, sollte einen Standardkonstruktor haben, so dass die SQLQuery-Methode in der Lage ist, sie zu initialisieren, bevor sie zu Ihrer List hinzugefügt wird.

Deshalb, wenn Sie hatte eine Klasse namens Person die SQLQuery Methode ein intern

Person p = new Person(); 

tun würde, und dann würde es seine Eigenschaften füllen

Person.One = .... ; 
Person.Two = .... ; 

Anstelle einer Klasse wie oben die Sie verwenden möchten ein Array vom Typ String. Das Problem ist, dass diese Klasse keinen Standardkonstruktor hat. Wir können ein neues Array als

string[] someStrings = new string[10]; 

schaffen, aber wir können nicht ein Array von Strings erstellen, wie

string[] someStrings = new string[]; 

folgt, weil wir angeben müssen, wie groß diese Reihe sein wird.

Ich fürchte, Sie werden nicht in der Lage sein zu erreichen, was Sie versuchen zu tun, müssen Sie eine Klasse mit einem Standardkonstruktor anstelle von string[] verwenden.

+0

Wenn myTable einer bereits definierten Entity ("MyEntity") zugeordnet ist, konnte er ein Array über: results = dbContext.Set () .Auswählen (e => new string [] {e.one, e. zwei}). ToArray(); –

Verwandte Themen