如何在EF MVC4中进行UserContext搜索

时间:2014-01-06 01:44:58

标签: c# asp.net-mvc entity-framework asp.net-mvc-4

寻找一种低开销的方法来检查simplememebershiprovider功能的UserProfile表。

如何在当前用户的UserProfile表中查找小于6的MaxDebt?

EF使得返回UserID变得很重,然后执行UserID查找并检查字段MaxDebt是否大于5.

在EF / MVC4中返回当前用户的行MaxDebt的最简单方法是什么?

我只知道笨拙的方式。

        int userid = WebSecurity.GetUserId(model.RegistrationInfo.UserName);
        int debt;
        using (var ctx = new UsersContext())
        {
            debt = ctx.Database.ExecuteSqlCommand("SELECT MaxDebt from dbo.UserProfiles where UserID={0}", userid);
        }
        if (debt > 5)
        {
            return false;
        }
        return true;

1 个答案:

答案 0 :(得分:1)

首先,我会为适合UserProfile表的User创建一个模型。它会是这样的:

[Table( "UserProfile" )]
internal class UserProfile
{
    [Key]
    public int UserId { get; set; }
    public string UserName { get; set; }
    public string EmailAddress { get; set; }
    public int MaxDebt {get; set; }
}

然后做这样的事情:

using (var ctx = new UserProfileEntities())
{

     UserProfile user = ctx.UserProfiles.Find( userId );
     if( user != null )
     { 
         int debt = user.MaxDebt;
         ...
     }         
}

假设UserProfileEntities是这样的:

class UserProfileEntities : DbContext
{
    static UserProfileEntities()
    {
        Database.SetInitializer<UserProfileEntities>( null );
    }
    public DbSet<UserProfile> UserProfiles { get; set; }        
}
相关问题