我正在尝试存储一个作为对话成员的字符串列表。
[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()
{
}
}
我正在使用Postman对URI进行Post请求,这似乎工作正常,返回201 Created并给出包含正确信息的json对象。 这是我发布的json:
{
"Key": "123",
"ConversationName": "Test",
"Administrator": "Ken",
"Members": ["y@12.com", "f@78.com"]
}
但是,当我尝试在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 :(得分:1)
帖子基本上会在您提供实体时返回实体,显然是 Members
。
获取从数据库加载Conversation
。它当时不能有Members
,因为Members
是List<string>
,它可能无法映射到数据库列。
您可能希望帖子将Members
存储到数据库中。这不会发生,因为您应该使用Member
实体而不是字符串。 Member
可以是一个具有Id
和string
属性的简单类。