如何从 Orchard CMS 中的数据库中获取表数据?我是 Orchard CMS 的初学者,我不知道在 Orchard CMS 中获取和保存任何数据,因为它不像 ado.net 或 linq to sql 或实体框架等常规数据库访问模型。
1 回答
好的,所以我建议先阅读文档并遵循一些教程(例如http://www.ideliverable.com/blog/writing-an-orchard-webshop-module-from-scratch-part-1)。我至少发现 Orchard 有点难以跳入,不得不慢慢涉水,阅读所有相关材料。一旦你对到底发生了什么有了一点了解,掌握 Orchard 复杂性的最佳资源是在 Orchards 源代码中查找示例。
无论如何,您在这里谈论的是两件不同的事情,访问 Orchard 内容项和访问您自己在 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);
简单!希望这可以帮助您入门:)
编辑:
因此,要从内容项中获取部分数据,您可以使用 .As<> 例如。
var fooPart = contentItem.As<FooPart>();
var name = fooPart.Name;