Как получить данные таблицы из базы данных в Orchard CMS?
Как получить данные таблицы из базы данных в 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, - это искать примеры в исходном коде 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);
Это позволит получить элемент контента с указанным идентификатором. Скажем, если вы хотите получить все элементы контента с частью под названием 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<> Например.
var fooPart = contentItem.As<FooPart>();
var name = fooPart.Name;