Преобразовать запрос MySQL в синтаксис запроса Entity Framework - PullRequest
0 голосов
/ 08 марта 2012

Может кто-нибудь помочь мне преобразовать этот запрос MySQL в Entity Framework? Я использую это в проекте ASP .NET, но я знаю только, как выполнять базовые запросы в Entity Framework. Это кажется слишком сложным, и я не могу найти работающее решение уже много часов ...

 $rs = mysql_query("SELECT barcode,latitude,longitude,date_time,location_name 
                    FROM sDetails
                    JOIN users on (users.id=sDetails.UserId)  
                    WHERE  (latitude and longitude is not null) 
                       and (latitude <> 100000 and longitude <> 100000)
               and id='$UserId'
            ORDER BY date_time desc");

Ответы [ 2 ]

1 голос
/ 08 марта 2012

Предполагая, что вы сгенерировали модель Entity Framework из базы данных, вы должны сделать что-то вроде (пример c #):

 var q = context.Details.Where( d => d.UserId = "$UserID" ).
             Where( d => d.latitude.HasValue && d.latitude != 100000 && .. etc ).
             OrderByDescending( d => d.date_time ).
             Select( d => new {d.barcode, d.latitude, d.longitude, etc ... };

Я не уверен, почему у вас есть объединение, так как вы ничего не выбираете из пользователей таблиц.

0 голосов
/ 08 марта 2012

Спасибо @Phil код, который вы дали выше, кажется, работает в основном, но он все еще показывает ошибку в var q = context. ScanDetails .Where

Ошибка 3:«System.Web.HttpContext» не содержит определения для «ScanDetails», и нет метода расширения «ScanDetails», принимающего первый аргумент типа «System.Web.HttpContext» (отсутствует директива using или ссылка на сборку?)

это код, который у меня есть:

public class read : IHttpHandler
{
    sqlEntities _db = new sqlEntities();

    public bool IsReusable { get { return true; } }

    public void ProcessRequest(HttpContext context)
    {
        //Write out the JSON you want to return.

       var q = context.ScanDetails.Where( d => d.UserId = "1" ).
         Where( d => d.latitude.HasValue && d.latitude != 100000  ).
         OrderByDescending( d => d.date_time ).
         Select( d => new {d.barcode, d.latitude, d.longitude };


           // stuff to do here

    }


    public IQueryable<ScanDetail> scanData { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...