C# 将JSON数据对象存储到ASP.NET MVC(实体框架)中的数据库

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" }

我有这样的JSON数据:

{
   "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);