C# 将JSON数据对象存储到ASP.NET MVC(实体框架)中的数据库
我有这样的JSON数据:C# 将JSON数据对象存储到ASP.NET MVC(实体框架)中的数据库,c#,asp.net,asp.net-mvc,json,entity-framework,C#,Asp.net,Asp.net Mvc,Json,Entity Framework,我有这样的JSON数据: { "id":"", "firstName":"John", "lastName":"Doe", "phones":[ { "value":"555-555-555", "$$hashKey":"object:8" }, { "value":"444-444-444", "$$hashKey":"object:10" }
{
"id":"",
"firstName":"John",
"lastName":"Doe",
"phones":[
{
"value":"555-555-555",
"$$hashKey":"object:8"
},
{
"value":"444-444-444",
"$$hashKey":"object:10"
}
],
"emails":[
{
"value":"example@mail.com",
"$$hashKey":"object:12"
},
{
"value":"othermail@mail.com",
"$$hashKey":"object:18"
}
],
"tags":[
{
"value":"friend",
"$$hashKey":"object:14"
},
{
"value":"john",
"$$hashKey":"object:16"
}
],
"address":"Route 44",
"city":"NY",
"bookmarked":"",
"notes":"It's John"
}
我想使用ASP.NET MVC实体框架(使用Microsoft SQL数据库)将此JSON数据存储到数据库中。我的模型是使用ADO.NET实体框架数据模型从数据库自动生成的。我面临的问题是,出于某种原因,它不会在数据库中存储电子邮件/电话和标签。我尝试了我能找到的一切,但没有一个对我有用。有人知道问题出在哪里吗?我如何将此JSON存储到数据库中
编辑1:
调试控制器中的联系人变量后,我注意到电子邮件、标签和电话模型数据都是空的。我不知道它们是怎么空的,为什么空的
我还向所有外键添加约束
以下是数据库模型:
这是从数据库自动生成的模型(EF数据模型)
下面是向数据库添加数据的函数:
public string AddContact(Contact contact)
{
if (contact != null)
{
db.Contacts.Add(contact);
db.SaveChanges();
return "Contact Added";
}
else
{
return "Invalid Record";
}
}
您的JSON应该如下所示:
var json = {
"id": "123",
"firstName": "John",
"lastName": "Doe",
"phones": [
{
"number": "555-555-555"
},
{
"number": "444-444-444"
}
],
"emails": [
{
"email1": "example@mail.com"
},
{
"email1": "othermail@mail.com"
}
],
"tags": [
{
"tag1": "friend"
},
{
"tag1": "john"
}
],
"address": "Route 44",
"city": "NY",
"bookmarked": "",
"notes": "It's John"
};
我是这样通过的:
$.ajax({
url: 'YourAddress',
data: { Action: 'CheckJson', JSONData: JSON.stringify(json) },
dataType: "json",
async: false,
success: function (data) {
},
error: function (x, e) {
}
});
然后下载
这样做:
string json = request["JSONData"];
Contact m = JsonConvert.DeserializeObject<Contact>(json);
string json=request[“JSONData”];
联系人m=JsonConvert.DeserializeObject(json);
“id”不应为空,因为通过反序列化对象,您将获得异常
我希望它能帮助你。你遇到了什么错误?@Ofiris没有错误。。。来自JSON对象的电话、标签和电子邮件数据没有存储到数据库中……如果您将这些
HashSet
集合更改为List
?@dbc,让我试试。我会发回results@dbc我尝试了你提到的问题,但它并没有解决我的问题
$.ajax({
url: 'YourAddress',
data: { Action: 'CheckJson', JSONData: JSON.stringify(json) },
dataType: "json",
async: false,
success: function (data) {
},
error: function (x, e) {
}
});
string json = request["JSONData"];
Contact m = JsonConvert.DeserializeObject<Contact>(json);