Ale ten błąd nie ma nic wspólnego z zapytaniem.
Nie wiem jaki jest sens zwracać IQuerable w metodzie API ale ja się nie znam.
Jeśli te metodę masz na myśli
public ActionResult Index() {
var pytanie = db.vwTowar.SqlQuery("Select tw_Symbol From vwTowar Where tw_Symbol LIKE 'V%").ToList();
return View();
}
to nie rozumiem co tu chcesz osiągnąć bo pytasz się w sql-u o tw_Symbol i dostaniesz z takiego zapytania listę stringów więc to taką listę powinieneś zwracać a nie jakiś View()
public List<string> Index() {
return db.vwTowar.SqlQuery("Select tw_Symbol From vwTowar Where tw_Symbol LIKE 'V%").ToList();
}
albo
public HttpResponseMessage Index() {
var symbols = db.vwTowar.SqlQuery("Select tw_Symbol From vwTowar Where tw_Symbol LIKE 'V%").ToList();
return Request.CreateResponse(HttpStatusCode.OK, symbols);
}
no i lepiej to opakować w jakiś spójny model - kilka klas, które będą wykorzystywane w komunikacji z urządzeniami.
Bardziej skomplikowane zapytania da się przetłumaczyć na linq tylko czasem nie ma sensu.
W tej metodzie też masz bałagan
public IQueryable<vwTowar> GetvwTowars()
{
string sqlString = "Select tw_Symbol From vwTowar Where tw_Symbol LIKE 'V%";
var objctx = (db as IObjectContextAdapter).ObjectContext;
ObjectQuery<vwTowar> student = objctx.CreateQuery<vwTowar>(sqlString);
vwTowar newStudent = student.First<vwTowar>();
return null;
}
W zapytaniu jest "Select tw_Symbol From..." więc, znowu, dostaniesz listę stringów. Potem coś dziwnie kombinujesz i zwracasz null.
Powinno być np. coś takiego
public HttpResponseMessage GetvwTowars()
{
string sqlString = "Select * From vwTowar Where tw_Symbol LIKE 'V%";
var towary = db.vwTowar.SqlQuery("Select * From vwTowar Where tw_Symbol LIKE 'V%").ToList();
return Request.CreateResponse(HttpStatusCode.OK, towary);
}
Tylko, że chyba zwykle nie ma sensu zwracać całych obiektów z bazy danych (wszystkich danych) tylko to co Ci potrzeba. Lepiej przygotować sobie modele do wymiany danych w API, osobne klasy, które będą przesyłane pomiędzy telefonem a serwerem.