gpt4 book ai didi

content-management-system - 如何从 Orchard CMS 中的数据库中获取表数据?

转载 作者:行者123 更新时间:2023-12-04 08:44:30 25 4
gpt4 key购买 nike

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

最佳答案

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

无论如何,您在这里谈论的是两件不同的事情,访问 Orchard 内容项和访问您自己在 Orchard 中的表。两者都比较简单。 Orchard 有很多很好的辅助方法可以做到这一点。要访问 Orchard 内容,您需要使用 orchard 内容管理器。

private readonly IOrchardServices services;

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

所以现在我们的 Controller 中有 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;

关于content-management-system - 如何从 Orchard CMS 中的数据库中获取表数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19218682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com