2014-12-25 6 views
2

Я хочу назначить пользователь My Project Но есть проблема, когда я запускаю его я получаю ошибкуПрисвоить пользователь к списку проектов В Asp.net Mvc 5 Применения

Несколько наборов объектов для каждого типа не поддерживаются. Наборы объектов «ApplicationUsers» и «Users» могут содержать экземпляры типа «ProjectManagementSystem.Models.ApplicationUser». Это в моих IdentityModels.cs

public class ApplicationUser 
    : IdentityUser<string, ApplicationUserLogin, 
    ApplicationUserRole, ApplicationUserClaim> 
{ 
    public ApplicationUser() 
    { 
     this.Id = Guid.NewGuid().ToString(); 

    } 


    public async Task<ClaimsIdentity> 
     GenerateUserIdentityAsync(ApplicationUserManager manager) 
    { 
     var userIdentity = await manager 
      .CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); 
     return userIdentity; 
    } 
    public string Name { get; set; } 

    public string LastName { get; set; } 

    public string User_name { get; set; } 

    public string City { get; set; } 

    public virtual ICollection<Project> Projects { get; set; } 
} 

Это также от IdentityModels.cs

modelBuilder.Entity<Project>() 
     .HasMany<ApplicationUser>(c => c.UsersOnProjects).WithMany(i => i.Projects) 
     .Map(t => t.MapLeftKey("ProjectID") 
      .MapRightKey("Id") 
      .ToTable("Projects")); 

И это:

public System.Data.Entity.DbSet<ProjectManagementSystem.Models.Clients> Clients { get; set; } 

    public System.Data.Entity.DbSet<ProjectManagementSystem.Models.ProjectCategory> 
              ProjectCategories { get; set; } 

    public System.Data.Entity.DbSet<ProjectManagementSystem.Models.Project> Projects 
                   { get; set; } 

    public System.Data.Entity.DbSet<ProjectManagementSystem.Models.ApplicationUser> 
                 ApplicationUsers { get; set; } 

Теперь это моя модель проекта

public class Project 
    { 
    [Key] 
    public int ProjectId { get; set; } 

    [Required] 
    [Display(Name = "Project Name")] 
    public string ProjectTitle { get; set; } 

    [Required] 
    public string Description { get; set; } 

    public string Url { get; set; } 

    public int ProjectCategoryId { get; set; } 

    [Required] 
    [Display(Name = "Project Category")] 
    public virtual ProjectCategory ProjectCategory { get; set; } 

    public int ClientId { get; set; } 

    public virtual Clients Client { get; set; } 

    public string Budget { get; set; } 

    [Display(Name = "Start Date")] 
    public string StartDate { get; set; } 

    [Display(Name = "End Date")] 
    public string EndDate { get; set; } 

    public string UserId { get; set; } 

    public virtual ApplicationUser User { get; set; } 

    public virtual ICollection<ApplicationUser> UsersOnProjects { get; set; } 
} 

Я попробовал все, как удаление этой части

public System.Data.Entity.DbSet<ProjectManagementSystem.Models.ApplicationUser> 
               ApplicationUsers { get; set; } 

Изменение мой ProjectController

ViewBag.UserId = new SelectList(db.ApplicationUsers, "Id", "Name"); 

    To 

ViewBag.UserId = new SelectList(db.Users, "Id", "Name"); 

и многое другое, но я всегда получаю ту же ошибку .... Я создал роли пользователей и групп из этой ссылки http://typecastexception.com/post/2014/08/10/ASPNET-Identity-20-Implementing-Group-Based-Permissions-Management.aspx

Возможно, есть что-то с этим, что дает мне ошибку. Я создаю мой контроллер с помощью entityframwork

+0

В отличие от сайтов на форуме мы не используем «Спасибо» или «Любая помощь оценена» или подписи на [so]. См. «[Должны ли« Привет »,« спасибо », теги и приветствия удалены из сообщений?] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed-from-posts). –

+0

Вы используете отдельный пользовательский контекст БД или расширяете встроенный контекст идентификации? –

+0

Я не использую отдельный контекст db. У меня расширен расширенный контекст идентификации. – error505

ответ

0

меня решить, поставив эту линию на мой взгляд

@Html.ValidationSummary(false) 

И положить Var modelStateErrors и точку останова на если (ModelState.IsValid)

var modelStateErrors = this.ModelState.Values.SelectMany(m => m.Errors); 
     if (ModelState.IsValid) 
     { 
      db.Projects.Add(project); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

После этого я узнал, что у меня есть сообщение об ошибке в моей модели проекта и что ProjectCategory требуется. Я удалил это, и теперь он действительно работает.

public int ProjectCategoryId { get; set; } 

    [Display(Name = "Project Category")] 
    public virtual ProjectCategory ProjectCategory { get; set; } 
Смежные вопросы