2017-03-27 36 views
0

創建複雜的對象我一直在做的主要是服務器端渲染應用程序,現在我開始做的WebAPI +的客戶端渲染JavaScript框架。在REST

我有一個創意,其中創建User的表單也有Organization的字段,它將在一個事務中與User一起創建。如果我要做服務器端渲染,我將使CreateUserViewModel其中包含所有字段的形式,我的控制器操作將採取該CreateUserViewModel,然後將CreateUserViewModel字段映射到UserOrganization實體字段。

但如果我提出REST API,應該我也有這種用視圖模型邏輯包含從表單中的所有領域,這是在控制器的操作方法的參數?或者我應該有兩種不同的方法POST: /usersPOST: /organizations,並在客戶端執行從輸入字段映射到UserOrganization並分別調用這兩個方法?如果第二種選擇是正確的方式,那麼我將如何使它成爲交易?

+1

「如果第二個選項是正確的方法,我將如何使它的事務呢?」 - 當然,如果它需要交易,第二個選項不是正確的方法。但是你可能會考慮它是否需要交易。如果沒有更多的細節,很難說清楚,但是可能會期望用戶成爲組織的成員,所以也許組織可以在不使用事務的情況下首先創建。 – Joe

+0

它必須是事務性的,用戶在註冊時必須輸入組織細節,一個人不能沒有另一個存在。不是我的規範,它是客戶需要的。 – Aleksa

+1

@Alexsa,你似乎在暗示該組織的細節基本上是在數據模型中的用戶屬性(即你沒有使用相同的組織> 1個用戶)。在這種情況下,您對用戶和組織單獨呼叫的第二個選項不是正確的方式。 – Joe

回答

0

它好得多的控制器分開你的行動,並派出兩個獨立的視圖模型給他們,那麼你就可以在業務層做渣滓的交易也可以,如果你使用的實體框架使用的工作模式的單位。 考慮在其他一些您想添加用戶的表單中,如果您選擇了第一種方法,那麼您必須發送一個包含大量空字段的大視圖模型。 BR MReza