Можно ли иметь список < string > как свойство в классе активных записей
-
03-07-2019 - |
Вопрос
Возможно ли иметь отношение HasMany базового типа, такого как String, к классу ActiveRecord, без необходимости создания другого объекта, такого как (TodoListItem), для хранения значения.
[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; }
}
}
Кто-нибудь может помочь?
Решение
Да, вы можете сделать это. Вы можете сопоставить отношение «один ко многим» со встроенным или простым типом (тип значения или строка), а не с постоянным типом. Р>
Вам нужно будет указать параметры ColumnKey
, Table
и Element
в объявлении атрибута HasMany
для заставить его правильно подключиться. Вы должны иметь столбец суррогатного ключа, чтобы AR мог обрабатывать обновления и каскады, а затем Element
сообщает AR, какой столбец в таблице содержит простое значение, которое он будет использовать для создания списка. Р>
[HasMany(typeof(string), Table="ToDoList_Items",
ColumnKey = "ListItemID", Element = "Item")]
public IList<string> Items { get; set; }
(или что-то подобное - у меня нет удобного компилятора для этого флажка, но в соответствии с документами API он должен работать.)
Кстати, если вы еще не посмотрели, http://api.castleproject.org своего рода незаменим для любой работы со стеком Касла.
Другие советы
В 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 ( или учебник ), поскольку это также должно помочь устранить любую путаницу.