0

Orchard CMSを使用して、レコードとパーツプロキシを処理していますが、それをDBに保存する方法がわかりません。実際、私は、このパラダイムに保存しようとしているアイテムを取得する方法すら知らないことを告白します。私はもともとenum選択肢に'sを使用していました:

MyEmum.cs

public enum Choices { Choice1, Choice2, Choice3, Choice4 }

MyRecord.cs

public virtual string MyProperty { get; set; }

MyPart.cs

public IEnumerable<string> MyProperty
{
    get
    {
        if (String.IsNullOrWhiteSpace(Record.MyProperty)) return new string[] { };
        return Record
            .MyProperty
            .Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries)
            .Select(r => r.Trim())
            .Where(r => !String.IsNullOrEmpty(r));
    }
    set { Record.MyProperty = value == null ? null : String.Join(",", value); }
}

今、私のサービスクラスで、私は次のようなことを試みました:

public MyPart Create(MyPartRecord record)
{
    MyPart part = Services.ContentManager.Create<MyPart>("My");
    ...
    part.MyProperty = record.MyProperty; //getting error here
    ...
    return part;
}

ただし、次のエラーが発生します。Cannot implicitly convert 'string' to System.Collections.Generic.IEnumerable<string>'

基本的に、チェックボックスリスト(1つ以上の選択)からの選択肢をコンマ区切りのリストとしてDBに保存しようとしています。

そして、これは私がどのようにを使用するかという問題を克服することさえしませんenum。何かご意見は?

いくつかの背景について:

この関係を処理する適切な方法は、別のテーブルを作成してを使用することであることを理解していますIList<MyEnum>。ただし、これは編集で操作するつもりのない単純なリストです(実際、このシナリオでは、コントローラーとルートを使用してフロントエンドでこれを処理するため、ドライバーは使用されません)。統計/履歴の目的で、データをキャプチャして管理ビューに再表示しています。パーツを削除することも検討できます(次の投稿を検討してください:Bertrandのブログ投稿) 。

4

1 に答える 1

0

そのはず:

part.MyProperty = new[] {"foo", "bar"};

例えば。パーツのセッターは、レコードのプロパティの値をコンマ区切りの文字列として格納し、DBに永続化します。

列挙型の値を使用する場合は、 .NETが列挙型で提供するParseおよびToStringAPIを使用する必要があります。

于 2012-12-29T22:30:46.437 に答える