我的帐户模型中有一个班级:
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
}
现在我想在控件类的命令中使用Enumerable.Single()
方法,如下所示:
UserProfile userProfile = UserProfile.Single(x => x.UserId==id);
其中id
是来自用户输入的参数。因此,我将IEnumerable<UserProfile>
实施为UserProfile
。 VS在模型类中给出了2个错误:
AppName.Models.UserProfile' does not implement interface member 'System.Collections.IEnumerable.GetEnumerator()'
AppName.Models.UserProfile' does not implement interface member 'System.Collections.Generic.IEnumerable<MvcApplication1.Models.UserProfile>.GetEnumerator()'
在控制器类
中AppName.Models.UserProfile does not contain a definition for 'Single'
问题是我应该在IEnumerable
课程上实施UserProfile
吗?我认为Single()
仅处理IEnumerable
。如果是这样,在我的情况下,我该如何实现呢?
解决方案:我很困惑。解决方案是:
UsersContext context = new UsersContext();
UserProfile userProfile = context.UserProfiles.Single(u => u.UserId==id);
Wher UserProfiles
是DBSet
类中定义的UsersContext
。
答案 0 :(得分:1)
看起来您正在使用Entity Framework。要从数据库访问UserProfile
,首先需要创建DbContext
的上下文
例如:
using(var context = new MyContext())
{
UserProfile profile = context.UserProfile.Single(u => u.UserId == id);
}
现在我认为你只是在类UserProfile
上使用方法,这不是userprofiles的集合(甚至不是单个userprofile,因为它没有实例化)。