所以我正在使用一个名为 Chat 的数据模型创建一个端点,该模型将接受此 JSON 形式的数据并将其存储在数据库中。
[{
"ID": "123456",
"Chat": [{
"ID": "1",
"Message": "User: that's a nice car Dylan: thanks",
"PostedBy": "Dylan",
"PostedOn": "2018-01-23T18:25:43.511Z"
},
{
"ID": "2",
"Message": "User: that's a really nice car Terry: thanks ",
"PostedBy": "Terry",
"PostedOn": "2018-02-23T18:25:43.511Z"
},
{
"ID": "3",
"Message": "User: that's the best car Roger: thanks",
"PostedBy": "Roger",
"PostedOn": "2018-03-23T18:25:43.511Z"
}
]
}]
这是我目前拥有的,当我将数据发送到端点时,它只存储 ID,而不存储数据库中的其他任何内容。关于如何更改我的模型以接受正在发送的全部数据的任何想法/指导,我们将不胜感激。
public class Chat
{
public string ID { get; set; }
public string message { get; set; }
public string postedBy { get; set; }
public DateTime? postedOn { get; set;}
}
我在这里可能是错的,但在我看来,您正在使用一个表示单个消息实例(类Chat
(的类来尝试存储整个聊天数据列表。
如果我是对的,它实际存储ID
的唯一原因是它碰巧对数据中的两个不同级别具有相同的名称;一个用于外部列表(整个集合 - 这就是存储的内容(,一个用于每个内部聊天项。
尝试添加这个类,并改用它(或者更确切地说是另外,因为它实际上包含你已经存在的类Chat
的实例列表(:
public class ChatThread
{
public string ID { get; set; }
public IEnumerable<Chat> Chat { get; set; }
}
对象上的ID
不是Chat
对象的ID
,而是聊天对象常见的更高ID
定义。
如果我们忽略您没有考虑到 C# 是一种区分大小写的语言这一事实,那么您真的很接近。"更高"层由 String ID
组成,但也由 Chat
对象的数组组成,因此您应该创建一个包含这两个属性定义的Class
。
public class JsonClass
{
public string ID { get; set; }
public Chat[] Chat { get; set; }
}
public class Chat
{
public string ID { get; set; }
public string Message { get; set; }
public string PostedBy { get; set; }
public DateTime PostedOn { get; set; }
}
由于 JsonClass
ID 属性存在多个 Chat
对象,因此必须将其设置为某种集合。我选择了一个数组,但您可以使用其他Collection
对象,例如 List
。