我得到了开发足球桌管理系统的任务。我决定使用 asp.net mvc 来做。唯一的要求是使用原始 SQL 查询。所以这意味着我不能使用 linq 或 lambda。我想做这样的事情:
using (var context = new FootballTableContext())
{
var players = context.Database.SqlQuery<PlayerViewModel>("SELECT Vardas, Pavarde FROM ZAIDEJAS").ToList();
}
Run Code Online (Sandbox Code Playgroud)
但执行此代码后,我得到的名单PlayerViewModel与null价值观。
视图模型类:
public class PlayerViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
上下文类:
public class FootballTableContext : DbContext
{
public FootballTableContext() : base("DefaultConnection") { }
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是如何将该查询绑定到我的 ViewModel?
有什么好的方法可以过滤响应时间晚于例如500秒的设备?
所以假设我的模型:
class Device(models.Model):
last_response = models.DateTimeField(null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
我最好的举动是:
from django.utils import timezone
for d in Device.objects.all():
now = timezone.now()
if d.last_response and (now - d.last_response).seconds < 500:
# Do something
Run Code Online (Sandbox Code Playgroud)
但是我不想为此查询所有数据库。如何使它与filter一样工作for d in Device.objects.filter(..some arguments..):?