Расширение 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; }
Существует нерешенная проблема, которая улучшит обнаружение обратных связей, поэтому в будущих выпусках это может больше не понадобиться.