1

値を保持するために (TodoListItem) などの別のエンティティを作成する必要なく、ActiveRecord クラスで String などの基本型の HasMany 関係を持つことは可能ですか。

[ActiveRecord]
public class TodoList
{

  [PrimaryKey]
  public int Id
  {
    get { return _id; }
    set { _id = value; }
  }

  [HasMany(typeof(string)]
  public IList<string> Items
  {
    get { return _items; }
    set { _items= value; }
  }
}

誰でも助けることができますか?

4

2 に答える 2

8

はい、できます。1 対多の関係を、永続型ではなく組み込み型または単純型 (値型または文字列) にマップできます。

適切に接続するには、属性宣言でColumnKey,TableおよびElementparamsを指定する必要があります。HasManyAR が更新とカスケードを処理できるように、サロゲート キー列が必要です。次にElement、テーブルのどの列がリストを作成するために使用する単純な値を保持しているかを AR に伝えます。

[HasMany(typeof(string), Table="ToDoList_Items", 
         ColumnKey = "ListItemID", Element = "Item")]
public IList<string> Items { get; set; }

(または同様のもの-このボックスでチェックするのに便利なコンパイラーはありませんが、APIドキュメントによれば動作するはずです。)

そういえば、まだご覧になっていない場合は、http://api.castleproject.orgは、Castle スタックの作業に不可欠です。

于 2008-10-07T00:29:28.577 に答える
-1

ActiveRecord では、タイプはテーブル内のレコードにマップされます (デフォルト)。このタイプがテーブルにどのようにマップされるべきかを混乱させているようです。

MyClass タイプには、次のような定義が必要です (PK 設定を除く)。

[ActiveRecord(Table = "MyTable")]
public class MyClass : ActiveRecordBase<MyClass>
{
    [Property]
    public int Id { get; set; }

    [Property]
    public int MyClassId { get; set; }

    [Property]
    public string ListItem { get; set; }
}

次に、リストをロードします。

public void LoadMyClasses()
{
    MyClass[] results = MyClass.FindAll();
}

混乱を解消するのにも役立つはずなので、 ActiveRecord のドキュメント(またはチュートリアル)に時間を費やすことをお勧めします。

于 2008-10-03T16:03:11.143 に答える