我按照实体框架教程编写了一个 ApplicationConfig 模型(这是简化的) -
public class ApplicationConfig
{
public ApplicationConfig()
{
this.Users = new Collection<User>();
this.Roles = new Collection<Role>();
}
public string Namespace { get; set; }
public virtual ICollection<User> Users { get; set; }
public virtual ICollection<Role> Roles { get; set; }
}
public class User
{
public User()
{
this.Roles = new Collection<Role>();
this.ApplicationConfigs = new Collection<ApplicationConfig>();
}
public int UserId { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public virtual ICollection<Role> Roles { get; set; }
public virtual ICollection<ApplicationConfig> ApplicationConfigs { get; set; }
}
我有一种方法可以检查特定应用程序的用户名/密码 -
public User ValidateUser(string applicationNamespace, string username, string password)
{
var applicationConfig = GetApplicationConfig(applicationNamespace);
User user = null;
if (applicationConfig != null)
{
user = applicationConfig.Users.FirstOrDefault(u => u.Username.ToLower() == username && u.Password == password);
}
return user;
}
我可以有成百上千的应用程序用户,但对于这个密码检查,我只希望返回匹配的用户。
ICollection 和上面的查询是否可以用于此目的?
我主要担心的是applicationConfig.Users
即使我只想查询一个用户,也会填满所有成千上万的用户。
或者我应该使用 IQueryable 或 IEnumerable 还是其他什么?