2013-05-28 2 views
0

У меня есть проект mvc с базой данных первой сущности. В проекте у меня есть 3 таблицы.Структура сущности mvc для многих пользователей и вставка ролей

Пользователи >>> ПользователиInRoles < < < Роли со многими для многих отношений.

и мои коды CreateUser ниже;

public bool CreateUser(string email, string password, string birthday,string firstname,string lastname) 
    { 
     bool result; 
     var dogumgunu = Convert.ToDateTime(birthday); 
     var sifre = FormsAuthentication.HashPasswordForStoringInConfigFile(password, "sha1"); 
     var confirmation = CreateConfirmationToken(email); 
      try 
      { 
       var user = new User 
       { 
        UserName = email, 
        Password = sifre, 
        UserJoinDate = DateTime.Now, 
        UserBirthDay = dogumgunu, 
        UserConfirmationToken = confirmation, 
        UserID = Guid.NewGuid(), 
        MemberFirstName = firstname, 
        MemberLastName = lastname 
       }; 
       var role = new Role 
       { 
        RoleName = "Client" 
       }; 
       user.Roles.Add(role); //problem is here!!!!!!!!! 
       _bb.Users.AddObject(user); 
       _bb.SaveChanges(); 
       result = true; 
      } 
      catch (Exception) 
      { 

       result = false; 
      } 


     return result; 
    } 

В этом коде я создаю новый пользователь. И я добавляю роль. Но этот код включает новую роль в таблице ролей. Я не хочу этого. Я хочу просто добавить таблицу UsersInRoles нового пользователя. Что не так? Спасибо за ответ.

ответ

0

своп эти две линии:

_bb.Users.AddObject(user); 
user.Roles.Add(role); 

, потому что AddObject преобразует весь граф объектов в Added состоянии. Если впоследствии добавить роль, ее состояние останется Unchanged.

И вы должны сначала извлечь роль из базы данных или создать объект Role, который имеет только существующий RoleId. (A так называемый объект-заглушка).

Так вместо new Role вы могли бы сделать

var role = _bb.Roles.Single(r => r.RoleName == "Client"); 
+0

не работает. снова добавьте новую роль. –

+0

спасибо, gert но не могу понять. скажите, пожалуйста, как добавить роль в таблицу UsersInRoles? –

+0

Я вижу. Но я могу понять. напишите небольшой образец? спасибо за помощь. и я сожалею о своей остановке. :) –

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