2015-06-21 2 views
1

Я добавил некоторые свойства в ApplicationUser, а два из них - ICollection. Когда я использую Update-Database, он не генерирует столбцы для этих двух членов.Элемент ICollection ApplicationUser не сохраняется в DB

Итак, что мне здесь не хватает? Я думаю, это очень просто. Я привык работать с Hibernate в Java, где он создает новую таблицу для коллекций элементов.

Некоторые примеры кода -

ApplicationUser

public class ApplicationUser : IdentityUser 
{ 
    public string FirstName { get; set; } 

    public string LastName { get; set; } 

    public byte[] UserImage { get; set; } 

    public virtual ICollection<string> Interests { get; set; } 

    public virtual ICollection<string> Friends { get; set; } 

} 

RegisterViewModel

public class RegisterViewModel 
{ 
    [Required] 
    [Display(Name = "Username")] 
    public string UserName { get; set; } 

    [Required] 
    [StringLength(25)] 
    [Display(Name = "First Name")] 
    public string FirstName { get; set; } 

    [Required] 
    [StringLength(25)] 
    [Display(Name = "Last Name")] 
    public string LastName { get; set; } 

    [Display(Name = "User Image")] 
    public int UserImage { get; set; } 

    [Required] 
    [Display(Name = "Interests")] 
    public virtual ICollection<string> Interests { get; set; } 

    [Display(Name = "Friends")] 
    public virtual ICollection<string> Friends { get; set; } 

    //........ 

Task Register (модель RegisterViewModel)

public async Task<ActionResult> Register(RegisterViewModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      var user = new ApplicationUser() 
      { 
       UserName = model.UserName, 
       FirstName = model.FirstName, 
       LastName = model.LastName, 
       Interests = model.Interests, 
       Friends = model.Friends 
      }; 

      HttpPostedFileBase file = Request.Files["file"]; 
      byte[] imgBytes = null; 

      BinaryReader reader = new BinaryReader(file.InputStream); 
      imgBytes = reader.ReadBytes(file.ContentLength); 

      user.UserImage = imgBytes; 


      var result = await UserManager.CreateAsync(user, model.Password); 
      if (result.Succeeded) 
      //............ 

ответ

0

Вам необходимо смоделировать элементы коллекции. Вы могли бы пойти многие или многие из многих.

// many to many 
public class Interest 
{ 
    public int InterestId { get; set; } 
    public string InterestDesc { get; set; } // field can't match class name 
} 

// one to many 
public class Interest 
{ 
    public int UserId { get; set; } // Make primary key the FK into application user 
    public string InterestDesc { get; set; } // field can't match class name 
} 

Затем измените свои коллекции

public virtual ICollection<Interest> Interests { get; set; } 

Не забудьте добавить DbSet к контексту. Повторите для друзей и других коллекций строк.

+0

Это сделало трюк. Благодаря! – omm118

Смежные вопросы