【问题标题】:Translate/Convert SQL to Entity Framework/LINQ将 SQL 转换/转换为实体框架/LINQ
【发布时间】:2014-04-23 04:32:03
【问题描述】:

我正在构建一个 MVC 应用程序并希望翻译以下简单的 SQL 查询

SELECT logon_count from application_users where username = 'username_to_find'

我是 LINQ 和实体框架的新手。 我需要将 logon_count 结果存储为 C# int 并且只期望一个结果。为了安全起见,可能应该包含 1 的限制。

以下类是使用 ado.net 从数据库中自动创建的,代表 application_users 表。

public partial class application_users
{
    public int idapplication_users { get; set; }
    public string username { get; set; }
    public string first_name { get; set; }
    public string last_name { get; set; }
    public Nullable<int> logon_count { get; set; }
}

我也有 dbcontext

private thedbcontext dbcontext= new thedbcontext (); //In the controller

public partial class mycontext : thedbcontext 
{
    public virtual DbSet<application_users> application_users { get; set; }
}

有人可以建议我如何更好地利用 LINQ/Entity Framework 来执行上述 SQL 并获得 c# 整数形式的结果。

【问题讨论】:

    标签: c# sql linq entity-framework-5 asp.net-mvc-5


    【解决方案1】:

    假设thedbcontext 是来自EntityFramework 的有效DbContext,那么您需要做的就是以下操作

    var usernameToFind = "user1";
    var db = new mycontext();
    var logonCount = db.application_users.Count(t => t.username == usernameToFind);
    

    通常,您的 mycontext 类将直接派生自 EF 的 DbContext 类,如下所示

    public partial class mycontext : DbContext
    {
        public virtual DbSet<application_users> application_users { get; set; }
    }
    

    【讨论】:

    • 我真的很想念sql。它更优越、简单、优雅、简洁、高效和高性能。不知道为什么非要给不懂sql的开发者加这个笨拙的包装器。
    【解决方案2】:

    这样:

    string username = "test";
    using(var dbContext = mycontext())
    {
    
    var LogonCount = (from application_users in dbContext.application_users
                      where application_users.username == username
                      select application_users).Count();
    }
    

    或者您可以使用 Richard 发布的 lambda 表达式。

    【讨论】:

      猜你喜欢
      • 2021-12-16
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2019-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多