Расширение SQLite-Net и FileModel

Я хочу создать класс, представляющий файл / папку, который имеет одного или ни одного родителя и может содержать файлы / папки. Потому что Моя папка - это особый случай файла. Моя модель выглядит так:

namespace WPP3.Base.DataModel
{
  public class DbFileModel
  {
    [PrimaryKey]
    public string Path { get; set; }

    public DateTime DateCreated { get; set; }
    public DateTime DateModified { get; set; }
    public string DisplayName { get; set; }
    public bool isFile { get; set; }

    [ForeignKey(typeof(DbFileModel))]
    public string ParentID { get; set; }

    [OneToMany(null, null, CascadeOperations = CascadeOperation.All)]
    public List<DbFileModel> Files { get; set; }

    [ManyToOne(null, null, CascadeOperations = CascadeOperation.All)]
    public DbFileModel ParentFile { get; set; }
  }
}

Но когда я пытаюсь использовать этот класс, SQLite-NetExtension выдает следующее исключение: "DbFileModel.Files: обратное отношение OneToMany не должно быть List или Array".

Можете ли вы посоветовать, как сделать этот класс с помощью SQLiteNetExtensions?

Большое спасибо:-)

1 ответ

Решение

Для отношений с одним и тем же классом вы должны явно объявить обратные отношения следующим образом:

[OneToMany(inverseProperty: "ParentFile", CascadeOperations = CascadeOperation.All)]
public List<DbFileModel> Files { get; set; }

[ManyToOne(inverseProperty: "Files", CascadeOperations = CascadeOperation.All)]
public DbFileModel ParentFile { get; set; }

Существует нерешенная проблема, которая улучшит обнаружение обратных связей, поэтому в будущих выпусках это может больше не понадобиться.

Другие вопросы по тегам