2012-07-18 63 views
1

我們有一個使用RavenDB的現有應用程序,並且希望創建一個可以將數據讀入和寫入Raven的自定義Orchard Admin模塊,以便我們可以管理這些數據。理想情況下,實現將允許我們使用ContentPart,以便創建可重用的「模塊」。從自定義數據源中填充ContentHandler中的ContentPart

通過將數據加載到ContentHandler中,有幾個從Web服務訪問數據的參考,但是我還沒有能夠推出一個實現。我已經能夠使用Controller/View讀取/寫入數據,但似乎更具限制性。

Use RavenDB as the database for an Orchard CMS module

How to change Orchard record repository

此外,我們需要管理的特性之一是圖像。我們希望利用Media Picker Field在我們的管理界面中選擇圖像。只要我們可以通過瀏覽器訪問圖像,Orchard就可以存儲物理圖像。

任何人都可以指向正確的方向嗎?

謝謝!

+0

如果我錯了,請糾正我,但爲了在ContentHandler中填充一個ContentPart(請參閱@ piotr-szmyd [here]的帖子(http://stackoverflow.com/questions/4727843/how-to-change -orchard-record-repository/5086069#5086069))你需要在Orchard中存儲某種ID。否則,你會用什麼來查找web服務中的數據?這正是我想要避免的,因爲我們不想通過Orchard存儲查找ID,所以導致我繞圈而行。我想我可以以某種方式避開,但我會嘗試爲Raven實施IRepository。 – codingintherain 2012-07-18 23:56:00

回答

1

如果您使用Orchard內容項目,Id已經存在 - 無需存儲新項目。你需要使用一些標識符來綁定Orchard和後端存儲,否則你將不得不重新實現整個Orchard數據層(這是一個矯枉過正)。

你只需要:

  • 創建ContentPart得出一個部分(不ContentPart<T>,因爲你不希望它被存儲在數據庫果園做)。然後,
  • 爲您的零件添加處理程序,連接到相應的生命週期事件(如OnLoading),並從給定的內容項ID和零件類型組合的後端加載數據。
  • 爲您的零件添加驅動程序(如往常一樣),並將您的數據存儲邏輯放在Editor方法中。

這樣你就會有一部分沒有任何數據存儲在Orchard數據庫內,完全從外部來源加載。

0

如果您希望能夠使用Orchard零件(評論,評級等)豐富外部數據,您應該構建一個零件,就像Piotr解釋的那樣。這意味着爲所有遠程對象創建內容項目,這將帶來自己的挑戰(這意味着同步獨特的數據源,這是從來沒有好玩的東西)。

如果你不需要這樣做,那麼你應該建立控制器動作(也許小部件)來表達這些數據。即使你這樣做,你仍然可以從許多果園的東西,如主題中受益。