3

我想做一个代表文件/文件夹的类,它有一个或没有父级,并且可以包含文件/文件夹。因为我的文件夹是文件的特例。我的模型如下所示:

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 制作该类吗?

非常感谢 :-)

4

1 回答 1

2

在与同一类的关系上,您必须显式声明这样的反向关系:

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

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

一个悬而未决的问题可以改进反向关系的发现,因此在未来的版本中,这可能不再需要。

于 2015-07-27T06:09:24.460 回答