如何从Orchard CMS中的数据库中获取表数据?

时间:2013-10-07 06:54:29

标签: content-management-system orchardcms

如何从Orchard CMS中的数据库中获取表数据? 我是Orchard CMS的初学者,我不知道在Orchard CMS中获取和保存任何数据,因为它不像常规数据库访问模型,如ado.net或linq to sql或entity framwork。

1 个答案:

答案 0 :(得分:9)

好的,所以我建议您先阅读文档并阅读一些教程(例如http://www.ideliverable.com/blog/writing-an-orchard-webshop-module-from-scratch-part-1)。我至少发现Orchard有点难以进入并且不得不慢慢地涉水,阅读所有相关资料。一旦你对将要发生的事情有了一些了解,掌握Orchard的复杂性的最佳资源就是在Orchards源代码中寻找示例。

无论如何,你在这里谈论两件不同的事情,访问Orchard内容项目并访问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);

这将从指定的id获取内容项。假设您想要使用名为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!希望这有助于您入门:)

编辑:

这样可以从您可以使用的内容项中获取部分数据.As&lt;&gt;例如

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