我应该实现IEnumerable(和如何)吗?

时间:2015-12-28 18:24:48

标签: asp.net-mvc entity-framework

我的帐户模型中有一个班级:

[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 UserProfilesDBSet类中定义的UsersContext

1 个答案:

答案 0 :(得分:1)

看起来您正在使用Entity Framework。要从数据库访问UserProfile,首先需要创建DbContext的上下文 例如:

using(var context = new MyContext())
{
  UserProfile profile = context.UserProfile.Single(u => u.UserId == id);
}

现在我认为你只是在类UserProfile上使用方法,这不是userprofiles的集合(甚至不是单个userprofile,因为它没有实例化)。