2013-06-25 53 views
0

我正在玩ASP.NET WebAPI,到目前爲止我有一些CRUD操作工作。但是,我的創建操作不完全正常工作。ASP.NET WebAPI如何使用所有數據創建用戶POST請求

使用以下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必須是和它所需要的相應的用戶ID擁有。

UPDATE2

看我爲解決答案。

兩次

回答

0

使Id列身份,以便數據庫負責增加。從而我可以發佈以下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": "[email protected]", "Cycle": 4, } ], "Positions": [], "Username": "Bigfoot", "FirstName": "Foo", "LastName": "Bar", "Password": "123", "Headline": "Pro" } 

而實體框架負責分配id的一切。

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

您剛纔創建了兩個對象的數組。
將它轉換爲單個實例是沒有意義的。

相反,你需要創建一個對象具有多個屬性:

{ StreetName:"Madison Square Garden", Country:"OP" } 
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 = ... 
    }; 
} 
+0

請檢查我的第一篇文章,我粘貼了JSON和我的問題。乾杯 – brk

+0

我不是很確定,如果我完全理解你的問題,但我想你的問題的答案取決於你如何映射EF實體,如果底層表使用標識列,你如何持久圖和所有。如果您不希望綁定用戶標識,則可以將它們保留爲JSON。順便說一下,將請求直接綁定到實體類並不是一個好習慣。 – Badri

+0

你是什麼意思,「將請求直接綁定到你的實體類是不好的做法」。它還會如何工作? :/ – brk

相關問題