3

Orchard CMS でデータベースからテーブル データを取得する方法は? 私は Orchard CMS の初心者です。Orchard CMS でデータをフェッチして保存する方法がわかりません。これは、ado.net や linq から SQL またはエンティティ フレームワークへの通常のデータベース アクセス モデルとは異なるためです。

4

1 に答える 1

9

わかりましたので、ドキュメントを読み、いくつかのチュートリアルに従うことから始めることをお勧めします (例: http://www.ideliverable.com/blog/writing-an-orchard-webshop-module-from-scratch-part-1 )。少なくとも、オーチャードに飛び込むのは少し難しいと感じ、関連するすべての資料を読みながら、ゆっくりと入り込む必要がありました。一体何が起こっているのか少し理解できたら、Orchard の複雑さを理解するための最良のリソースは、Orchard のソース コードで例を探すことです。

とにかく、ここでは、Orchard コンテンツ アイテムへのアクセスと、Orchard 内の独自のテーブルへのアクセスという 2 つの異なることについて話しています。どちらも比較的単純です。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;
于 2013-10-07T11:06:34.800 に答える