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