我正在使用ASP.NET WebAPI,到目前为止我已经完成了一些CRUD操作。但是我的Create操作不能完全正常工作。
使用以下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。
UPDATE2 :
请参阅我的解决方案。
两次
答案 0 :(得分:1)
[ { ... }, { ... } ]
您刚刚创建了一个包含两个对象的数组
将它转换为单个Address
实例是没有意义的。
相反,您需要创建具有多个属性的单个对象:
{ StreetName:"Madison Square Garden", Country:"OP" }
答案 1 :(得分: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 = ...
};
}
答案 2 :(得分:0)
制作Id列标识,以便数据库负责增量。因此,我可以发布以下JSON http post请求。
{ "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分配给所有内容。