如何编辑在IdentityDbContext中创建的表

时间:2013-12-18 04:32:36

标签: c# entity-framework asp.net-mvc-5 asp.net-identity

我已经搜索了近2天但找不到答案,所以让我在这里问一下。

我刚开始使用ASP.NET MVC 5.我设法扩展了默认的ApplicationUser:IdentityUser类,所以现在它存储了有关用户的其他信息。扩展功能之一是存储用户所属的组织。组织可以拥有多个用户。在应用程序中,我希望能够将用户添加到任何组织。我还希望能够直接管理组织。这是我的模特:

public class ApplicationUser : IdentityUser
{
    [Required]
    [MaxLength(30)]
    public string FirstName { get; set; }

    [Required]
    [MaxLength(30)]
    public string LastName { get; set; }

    [Required]
    [MaxLength(40)]
    public string Email { get; set; }

    [Required]
    public virtual Organisation Organisation { get; set; }
}

public class Organisation
{
    public int id { get; set; }

    [Required]
    [MaxLength(30)]
    public string Name { get; set; }

    [Required]
    public DateTime RegistrationDate { get; set; }

    [Required]
    [MaxLength(30)]
    public string DWId { get; set; }
}

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    //...
}

迁移后,EF为组织创建了一个单独的表。到目前为止,非常好。

现在,我希望能够从“组织”表中查看和添加/删除/删除组织。为此,我创建了一个控制器。但是,在控制器内部,我无法引用“组织”表,因此我可以将其作为模型传递给视图。这是我的想法,但没有做到:

public ActionResult Organisation()
{
    ApplicationDbContext _db = new ApplicationDbContext();

    var model = _db.Organisations.ToList(); //this does not work

    return View(model);
}

当我尝试构建它时,它说

  

'TrendfinderMVC.Models.ApplicationDbContext'不包含   “组织”的定义,没有扩展方法“组织”   接受第一个类型的参数   可以找到'TrendfinderMVC.Models.ApplicationDbContext'(是吗?   缺少using指令或程序集引用?)

事实上,当我开始输入'_db。'时,IntelliSense甚至没有显示与列表中的组织相关的任何内容。我如何获得目前所有组织的列表?任何见解将不胜感激。

1 个答案:

答案 0 :(得分:1)

确保您已在ApplicationDbContext班级

中宣布了一组组织
public class ApplicationDbContext : IdentityDbContext
{
    public ApplicationDbContext()
        : base("DefaultConnection"){}

    public DbSet<Organisation> Organisations { get; set; }
    ...
}