Orchard CMS でデータベースからテーブル データを取得する方法は? 私は Orchard CMS の初心者です。Orchard CMS でデータをフェッチして保存する方法がわかりません。これは、ado.net や linq から SQL またはエンティティ フレームワークへの通常のデータベース アクセス モデルとは異なるためです。
1 に答える
わかりましたので、ドキュメントを読み、いくつかのチュートリアルに従うことから始めることをお勧めします (例: 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;