0

我正在玩弄 ASP.NET WebAPI,到目前为止,我已经完成了一些 CRUD 操作。但是我的创建操作没有完全工作。

通过以下 POST 请求(JSON),我可以创建一个用户。

{Username:"Bob", FirstName:"Foo", LastName:"Bar", Password:"123", Headline:"Tuna"}

然而,该对象User实际上具有更多属性 - 地址集合。

public class User
{
    public int UserId { get; set; }
    public string Username { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Password { get; set; }
    public string Headline { get; set; }
    public virtual ICollection<Address> Addresses { get; set; }
}
public class Address
{
    public string Id { get; set; }
    public string StreetName { get; set; }
    public string Country { get; set; }
    public string ZipCode { get; set; }
    public int Cycle { get; set; }
    public int UserId { get; set; }
    public User User { get; set; }
}
... ...

我不确定如何使用一个或多个地址创建用户,因为我不知道下一个地址 ID 必须是什么以及它需要具有什么相应的 UserId。

更新2

请参阅我的答案以获取解决方案。

两次

4

3 回答 3

1
[ { ... }, { ... } ]

您刚刚创建了一个包含两个对象的数组。将其转换为单个实例
是没有意义的。Address

相反,您需要创建具有多个属性的单个对象:

{ StreetName:"Madison Square Garden", Country:"OP" }
于 2013-06-25T13:30:33.650 回答
1

这是一个简单的方法。您创建整个对象图,它是User具有所有属性集的对象,只需通过Get操作方法返回它,然后让 Web API 将您的图序列化为 JSON。您可以使用 Fiddler 中的 JSON 或其他任何内容进行 POST。

public User Get(int id)
{
   return new User()
   {
      UserId = id, UserName = "Arnold", ...,
      Addresses = new List<Address>()
      {
         new Address() { ... }
      },
      PhoneNumbers = ...
   };
}
于 2013-06-25T13:36:03.253 回答
0

制作了 Id 列 Identity,以便数据库负责递增。因此,我可以发布以下 JSON http 发布请求。

{ "Addresses": [ { "StreetName": "Bigfoot Street", "Country": "AB", "ZipCode": "1234", "Cycle": 1, }, { "StreetName": "Woo Way Avenue", "Country": "AC", "ZipCode": "7777", "Cycle": 2, } ], "Phonenumbers": [ { "Number": "99999999", "Cycle": 3, } ], "Emails": [ { "Uemail": "bigfoot@example.com", "Cycle": 4, } ], "Positions": [], "Username": "Bigfoot", "FirstName": "Foo", "LastName": "Bar", "Password": "123", "Headline": "Pro" }

实体框架负责为所有内容分配 id。

于 2013-06-27T16:46:49.827 回答