2012-08-10 20 views
0

我有一個WP7項目,該項目將調用天青(MVC4的WebAPI)一個REST Web服務。如何分享WP7和Azure的項目之間的型號

我的WP7項目有其序列化爲JSON,然後發送到Web服務模式。

的web服務,從解串WP7發送的數據,並將它們保存到Azure的表存儲之前再次實例化模型。

我如何共享項目之間的模型類?現在,我只是將cs文件複製過來了,如果對模型進行更改,我必須更新這兩個集合。我希望能夠從兩個項目中引用一個簡單的類庫項目,但WP7無法處理這個項目。

我該怎麼辦?

謝謝!

回答

2

有此問題的許多解決方案:

  • 你可以使用T4模板讀取實體併產生一類的WP7項目只包含對象的屬性,而不參照表存儲細節(如TableStorageEntity):http://weblogs.asp.net/cibrax/archive/2009/03/11/code-generation-with-t4-an-entities-to-dto-example.aspx

  • 你可以在2個文件,一個與TableStorage細節像TableStorageEntity和包含實體的唯一屬性一個文件(使用部分類此)劃分實體。然後,您可以添加僅包含WP7項目as a link中的屬性的文件。

  • 創建一個DTO(或者無論你怎麼稱呼它)手工類,並使用類似AutoMapper的DTO和TableStorage實體之間的映射。將DTO存儲在portable library中,以便它可以被各種類型的項目使用。在我看來,這是最好的解決方案,因爲您不想將您的實體完全暴露於「外部世界」。一個例子是用戶列表。你不想返回包括密碼,哈希等所有字段和其他敏感信息。最好有一個單獨的類,只包含你想暴露的信息。

+0

我認爲你有點過於複雜。他沒有說他的模型是由他/他自己以外的任何東西產生的(即EF模型)。用於定義便攜式庫程序集中的模型。 – Will 2012-08-10 13:35:52

+1

嗯,我真的不明白你的意見。他的問題是他需要更新兩套,如果他想改變模型。但是除非他使用T4模板或者通過部分類來分割文件,否則他將一直需要這樣做,因爲使用TableStorage,您的實體繼承自TableStorageEntity,並且此類在WP7上不可用。 – 2012-08-10 13:57:50

+0

謝謝你們 - 我會檢查一下,當我這樣做的時候回到這裏! – 2012-08-10 14:15:48

相關問題