2013-10-07 242 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

相关问题