2014-04-23 5 views
0

Je construis une application MVC et regardant traduire les éléments suivants simple requête SQL
/Convertir SQL Entity Framework/LINQ

SELECT logon_count from application_users where username = 'username_to_find' 

Je suis nouveau à LINQ et Entity Framework. Je dois stocker le résultat logon_count en tant que C# int et n'attendre qu'un seul résultat. Une limite de 1 devrait probablement être incorporée pour la sécurité.

La classe suivante a été créée automatiquement à partir de la base de données en utilisant ado.net et représente la table 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; } 
} 

J'ai aussi dbcontext

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

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

Quelqu'un peut-il suggérer comment je peux mieux utiliser LINQ Framework/Entité pour exécuter le SQL ci-dessus et obtenir un résultat sous la forme d'un entier C#.

Répondre

3

En supposant que thedbcontext est valide DbContext de EntityFramework, tout ce que vous devez faire est la suivante

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

Généralement votre classe mycontext tireraient directement de la classe EF DbContext comme si

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

Je manque vraiment sql. C'est plus supérieur, simple, élégant, concis, efficace et performant. Je ne sais pas pourquoi cette enveloppe maladroite doit être ajoutée pour les développeurs qui ne sont pas qualifiés dans sql. – Manachi

1

Comme ça:

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(); 
} 

ou vous pouvez utiliser l'expression lambda comme Richard posté.