寻找一种低开销的方法来检查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;
答案 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; }
}