2016-04-01 2 views
0

У меня есть таблица Conversation, в которой есть список Users в качестве столбца, а также список Messages и некоторые другие данные.Удаление пользователя из разговора с платформой Entity

Я ищу удалитьUser из Conversation таблицы, без удаления User или Conversation вообще, как они могут быть использованы в других местах.

Я не знаю, как это сделать ...

Я хотел бы сделать это, используя запрос Linq, но я не увенчались успехом в моих попытках создать запрос.

Любая помощь была бы высоко оценена!

[HttpPut] 
//[ResponseType(typeof(Conversation))] 
public async Task<IHttpActionResult> RemoveUserFromGroup(String key, User user) 
{ 
    Conversation conver = await db.Conversations.FindAsync(key); 

    if (conver == null) 
    { 
      return NotFound(); 
    } 

    IEnumerable<User> del = from d in conver.Users 
          where d.Email == user.Email 
          select d; 

    conver.Users.Remove(del); // ERROR ON THIS LINE AT "del" 

    await db.SaveChangesAsync(); 

    return Ok(conver); 
} 

Этот кусок кода не делать то, что я хочу, чтобы это однако

Conversation класса:

[DataContract] 
public class Conversation 
{ 
    [Key] 
    [DataMember] 
    public string Key { get; set; } 

    [DataMember] 
    public string ConversationName { get; set; } 

    [DataMember] 
    public string Administrator { get; set; } 

    [DataMember] 
    public virtual ICollection<User> Users { get; set; } 

    [DataMember] 
    public virtual ICollection<Message> Messages { get; set; } 

    public Conversation() 
    { 
     Users = new HashSet<User>(); 
    } 
} 

User класса:

[DataContract] 
public class User 
{ 
    [Key] 
    [DataMember] 
    public string Email { get; set; } 

    [DataMember] 
    public string Password { get; set; } 

    [DataMember] 
    public bool Admin { get; set; } 

    [DataMember] 
    public virtual ICollection<Conversation> Conversations { get; set; } 

    public User() 
    { 
     Conversations = new HashSet<Conversation>(); 
    } 
} 
+0

Можем ли мы увидеть образец вашего кода, пожалуйста? – Timmoth

+0

Если у него есть ключ с нулевым значением, то есть он не является обязательным, тогда вы можете просто загрузить объект и обнулить свойство UserID, а затем сохранить объект, и пользователь будет удален. Это поможет, если вы сможете опубликовать свой код. –

+0

@JamesDev Отношения не являются обязательными. Поэтому я мог бы просто загрузить пользователя и установить его адрес электронной почты (PK) как null? – semiColon

ответ

0
[HttpPut] 
public async Task<IHttpActionResult> RemoveUserFromGroup(String key, [FromBody]User user) 
{ 
    Conversation conver = await db.Conversations.FindAsync(key); 
    if (conver == null) 
    { 
      return NotFound(); 
    } 

    IEnumerable<User> del = from d in conver.Users 
          where d.Email == user.Email 
          select d; 

    conver.Users.Remove(del.ToList()[0]); 

    await db.SaveChangesAsync(); 
    return Ok(conver); 
} 

Данное решение исправлено проблема! Он удалит пользователя из указанного Пользователя из указанной группы соответствующим образом.

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