将MySQL查询转换为实体框架查询语法
请有人可以帮助我将此MySQL查询转换为实体框架? 即时通讯在一个ASP .NET项目中使用,但我只知道如何在实体框架中进行基本查询。这似乎太复杂,我无法找到,因为现在很多小时的工作解决方案......将MySQL查询转换为实体框架查询语法
$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");
假设你已经生成从数据库中实体框架模型,你应该能够做到像(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 ... };
我不知道为什么你有加入,因为你没有选择从用户表什么。
感谢@Phil 上面给出的代码似乎大部分工作,但它仍然在 var q = context中显示错误。 ScanDetails。凡
错误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; }
}
当我把*上下文*我的意思是数据库上下文,在你的情况下* _db *。你应该修改你的问题,而不是添加答案(当然,除非它是答案)。 – Phil 2012-03-08 16:37:06
谢谢@菲尔 我接受你的答案作为解决方案。 另外我会考虑你对未来回答的建议。 玩得很开心:) – 2012-03-08 16:58:07
感谢您的准确答案。请看下面的答案。我仍然有一些错误.. – 2012-03-08 16:35:52