0

CMSのフィールドをいつ使用する必要があり、クラスプロパティとデータベースフィールドをいつ使用する必要がありますか?

私のシナリオ:フィールドusage(テキスト)とprice(double)を持つ製品コンテンツパーツを作成しました。次に、コンテンツタイプの製品を作成し、パーツを追加しました。

モデルで製品レコードを作成し、製品テーブルを追加することもできます。そして、ドライバーなどの部分。一見、プログラミングが必要なオプション2以外に違いはわかりません。

ただし、問題が発生しました。オプション2では、リポジトリを使用して、プログラムで多くのアイテムを作成できました。オプション1では、製品コンテンツアイテムを作成できましたが、製品パーツのフィールドに入力できませんでした(エラーはありませんが、フィールドは空のままです)

では、いつオプション1を使用し、いつオプション2を使用するのでしょうか。そして、オプション1に関する私の問題は、そのオプションに関連していますか?

編集:オプション1の問題の明確化

製品パーツを作成しました。productpartに、小数であるフィールド価格を追加し、テキストフィールドであるフィールドUsageofproductを追加しました。

コードには次のようなものがあります。

        dynamic item = _cm.New("Product");
        item.TitlePart.Title = "Mijn dummy product";
        item.BodyPart.Text = "Some dummy text for this product";
        item.ProductPart.Price.Value = new decimal(20.5);
        item.ProductPart.Usage.Value = "Some dummy usage of this product";
        _cm.Create(item);

コードを実行した後、製品は正しいタイトルと本文で作成されますが、UsageとPriceは空っぽになります。item.As<>メソッドでも試してみました。しかし、私はその名前のオブジェクトを作成していないので、それはAsにコンパイルされません。

4

2 に答える 2

0

違いは、フィールドはプロジェクションでのみクエリできることですが、より一般的には、パーツとフィールドは異なる用途に使用されます。パーツは、フィールドではなく、再利用可能であることを意味します。たとえば、価格はどの製品にも特徴的であるため、おそらく一部のプロパティである必要があります。使用法、私にはわかりません、それはあなたがしていることにかなり特有に聞こえ、フィールドとしてよりよく行われるかもしれません。

オプション1の問題については、コードを見ずに言うのは難しいですが、間違っている可能性があります。

于 2012-11-19T02:29:57.567 に答える
0

どうやら、contentpartとfieldsにアクセスする前に、最初にアイテムを作成する必要があります。少なくともそれは私のために働いた。

私の分析が正しいかどうかを確認してください。もしそうなら、私はそれに答えとベルトランの答えをマークします。

コードは次のようになります。

    var item = _cm.New("Product");
    item.As<TitlePart>().Title = "Mijn dummy product";
    item.As<BodyPart>().Text = "Some dummy text for this product";

    //Create first before accessing the contentparts that are dynamic.
    _cm.Create(item);

    //And then access the product via dynamic object.
    dynamic dyn = item;
    item.ProductPart.Price.Value = new decimal(20.5);
    item.ProductPart.Usage.Value = "Some dummy usage of this product";
于 2012-11-19T07:57:25.093 に答える