使用usermanager编辑用户个人资料图像

时间:2016-01-21 08:12:58

标签: c# asp.net-mvc asp.net-mvc-3 nuget edmx

我在this tutorial关注帐户创建后添加个人资料照片。

该修改包含以下代码段,

Student student = db.Students.Include(s => s.Files).SingleOrDefault(s => s.ID == id);

在上面的示例中,它适用于表格调用Student,在我的情况下,我想使用AspNetUser表,但是我必须使用UserManger功能,一旦我尝试{ {1}}一个文件然后在编译时弹出该错误。

但在我的情况下,我试图加入IncludeAspNetUser

所以要填充上传的图片。我需要在用户管理器中使用UserManager代码

include

但随后出现以下错误

  

' ApplicationUserManager'不包含' Include'的定义   没有扩展方法'包含'接受第一个类型的参数   ' ApplicationUserManager'

如何忽略和包含文件

修改

这些是我在模型类

中所做的更改

文件

var user = await UserManager.Include(s => s.Files).FindByIdAsync(userid);

文件路径

public class File
{
    public int FileId { get; set; }
    ..

    public virtual ApplicationUser UserManager { get; set; }
}

ApplicationUser

public class FilePath
{
    public int FilePathId { get; set; }
    ..

    public virtual ApplicationUser UserManager { get; set; }
}

AspNetUser

public class ApplicationUser : IdentityUser
{
        ....

        public virtual ICollection<File> Files { get; set; }
        public virtual ICollection<FilePath> FilePaths { get; set; }

    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
    {
       ....
    }
}

然后尝试通过在PMC中键入以下内容将迁移添加到项目中:

public partial class AspNetUser { public AspNetUser() { .. } .... public virtual ICollection<File> Files { get; set; } public virtual ICollection<FilePath> FilePaths { get; set; } }

add-migration File

然后在控制台中出现以下错误

  

在程序集中未找到迁移配置类型   &#39;项目名&#39 ;. (在Visual Studio中,您可以使用“启用 - 迁移”   Package Manager控制台中的命令以添加迁移   配置)。

然后我在PMC中输入以下内容:

add-migration FilePaths

然后我在控制台中出现以下错误

  

创建DbModelBuilder或从创建的DbContext编写EDMX   不支持使用Database First或Model First。 EDMX只能是   从不使用现有的Code First DbContext获得   DbCompiledModel。

然后我尝试使用以下代码

迁移Enable-Migrations project_name.Models.sampleEntityFrameworkEntitiesFiles

FilesPath

add-migration File

在控制台中获取错误

  

创建DbModelBuilder或从创建的DbContext编写EDMX   不支持使用Database First或Model First。 EDMX只能是   从不使用现有的Code First DbContext获得   DbCompiledModel。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么您正在尝试遵循指南但使用ASP.NET身份。 ASP.NET Identity是一个独特的系统,它有自己的类和DBContext。要向用户添加新字段,您需要修改ApplicationUser类。只需将您的属性添加到此类,并根据需要应用迁移。这将为AspNetUser添加一个新列。然后将您的字段添加到ViewModel(如果有)以及处理您的字段所需的其他逻辑。