2016-02-21 5 views
0

Я пытаюсь сохранить список строк, являющихся членами разговора.Получение нулевого значения из Web api

[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 List<string> Members { get; set; } 

    public Conversation(string key, string name, string admin, List<string> members) 
    { 
     Key = key; 
     ConversationName = name; 
     Administrator = admin; 
     Members = members; 
    } 

    public Conversation() 
    { 

    } 
} 

Я использую Почтальон сделать запрос Post к URI, который, кажется, работает хорошо, возвращающийся 201 Created и дающая объект JS, содержащую правильную информацию. Это JSON я отправляю:

{ 
    "Key": "123", 
    "ConversationName": "Test", 
    "Administrator": "Ken", 
    "Members": ["[email protected]", "[email protected]"] 
} 

Однако, когда я пытаюсь получить разговор в методе GET это результат:

{ 
    "Key": "123", 
    "ConversationName": "Test", 
    "Administrator": "Ken", 
    "Members": null 
} 

Это мои функции в моем контроллере:

сообщение:

[HttpPost] 
    //[ResponseType(typeof(Conversation))] 
    public async Task<IHttpActionResult> PostConversation(Conversation convo) 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 

     db.Conversations.Add(convo); 
     await db.SaveChangesAsync(); 

     return CreatedAtRoute("DefaultApi", new { name = convo.Key }, convo); 
    } 

GET:

[HttpGet] 
public IQueryable<Conversation> GetConversations() 
{ 
    return db.Conversations; 
} 

Любая помощь будет очень признательна. Благодаря!

+0

Как вы узнаете о пользователях в вашей базе данных? – CodeNotFound

ответ

1

пост основном возвращает объект, как вы предлагаете его, что сMembers, по-видимому.

получает загружает Conversation из базы данных. В данный момент он не может иметь Members, потому что Members - это List<string>, который нельзя сопоставить с столбцом базы данных.

Возможно, вы найдете сообщение, чтобы сохранить Members в базе данных. Этого не происходит, потому что вы должны использовать Memberобъектов вместо строк. Member может быть простым классом, имеющим Id и string.

+0

Так может, если бы я изменил «Список » на 'Список ' будет ли это работать, поскольку это еще коллекция? – semiColon

+0

Я не знаю, как вы определяете «работу», но его сущности 'User' могут быть сохранены в базе данных как регулярные отношения 1-n. Включение их в список строк требует некоторой обработки после получения сущностей из базы данных. –

+0

Я сделал это, и он вставляет нового пользователя в таблицу, что приводит к ошибке '' ExceptionMessage: «Нарушение ограничения PRIMARY KEY« PK_dbo.Users ». Невозможно вставить дубликат ключа в объект« dbo.Users ». «Пользователь, которого я хочу вставить, однако, был создан и должен быть введен в таблицу бесед, но не создан как новый пользователь. У вас есть идея, как решить эту проблему? – semiColon