【问题标题】:How to fetch table data from database in Orchard CMS?如何从 Orchard CMS 中的数据库中获取表数据?
【发布时间】:2013-10-13 15:54:46
【问题描述】:

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

【问题讨论】:

  • 请描述你到底想做什么。
  • 我只想从 Orchard CMS 创建的数据库中访问任何表的数据
  • 您是否尝试在代码中访问果园内容项?
  • 是的,我正在尝试访问果园内容项目以及数据库中自定义创建的表。

标签: content-management-system orchardcms


【解决方案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;

【讨论】:

  • 非常感谢您的回复和帮助,让我试试这一切,然后我会告诉你。
  • 如何获取模型 FooPart 类数据而不是模型 FooRecord 类数据?
  • 对不起,我不明白你的意思。我的示例中的 FooRecord 未链接到部件
  • 嗨,我说的是我们在模块中创建的模型,例如.. inline namespace SimpleCommerce.Models { public class FooRecord : ContentPartRecord { public virtual string Name { get; set; } } public class FooPart : ContentPart&lt;FooRecord&gt; { [Required] public string Name { get { return Record.Name; } set { Record.Name = value; } } } }
  • 稍微修改了我的答案
猜你喜欢
  • 1970-01-01
  • 2018-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-20
  • 1970-01-01
  • 2020-11-01
相关资源
最近更新 更多