2013-10-07 399 views
2

如何從Orchard CMS的數據庫中獲取表格數據? 我是Orchard CMS的初學者,我不知道在Orchard CMS中獲取和保存任何數據,因爲它不像常規數據庫那樣訪問像ado.net或linq到sql或實體框架的模型。如何從Orchard CMS的數據庫中獲取表格數據?

+0

請描述你到底想要做什麼。 –

+0

我只想訪問由Orchard CMS創建的數據庫中的任何表的數據 –

+0

您是否嘗試訪問代碼中的果園內容項? – Hazza

回答

8

好的,所以我建議先閱讀文檔並遵循一些教程(例如http://www.ideliverable.com/blog/writing-an-orchard-webshop-module-from-scratch-part-1)。我至少發現烏節有點難以進入,並且不得不慢慢地進入,閱讀所有相關材料。一旦你對到底發生了什麼有了一些想法,掌握Orchard複雜性的最佳資源就是在Orchards源代碼中查找示例。

無論如何,您在這裏談論兩件不同的事情,訪問Orchard內容項目並訪問您在Orchard自己的表格。兩者都比較簡單。果園有一堆很好的幫手方法。要訪問Orchard內容,您需要使用果園內容管理器。

private readonly IOrchardServices services; 

public AdminController(IOrchardServices services) { 
    this.services = services; 
} 

所以我們現在在我們的控制器中的OrchardServices並且可以使用它是這樣的...

var contentId = 12; 
var contentItem = this.services.ContentManager.Get(contentId); 

這將讓從指定標識的內容項目。說,如果你想獲得一個叫MyPart部分的所有內容項目,你可以這樣做:

var items = this.services.ContentManager.Query<MyPart>().List(); 

它還包含了許多其他方法來創建內容等。現在查詢自己的表,你可以使用存儲庫。所以說你有一個名爲FooRecord的模型,你可以這樣做。

private readonly IRepository<FooRecord> fooRepository; 

public AdminController(IRepository<FooRecord> fooRepository) { 
    this.fooRepository = fooRepository; 
} 

您可以使用類似這樣的LINQ表達式查詢它:

var foo = fooRepository.Fetch(x => x.Id == fooId).FirstOrDefault(); 

要創建你可以做一個記錄......

var record = new FooRecord() { FooName = "Bob" }; 
this.fooRepository.Create(record); 

Simples!希望這有助於讓你開始:)

編輯:從您可以使用。作爲<>例如內容項

因此得到部分數據。

var fooPart = contentItem.As<FooPart>(); 
var name = fooPart.Name; 
+0

非常感謝您的回覆和幫助,讓我試試這一切,然後我會讓你知道。 –

+0

如何獲取模型FooPart類數據而不是模型FooRecord類數據? –

+0

對不起,我不明白你的意思。我的例子中的FooRecord沒有鏈接到部分 – Hazza

相關問題