asp.net 如何在LiteDB中使用DbRef

ukxgm1gy  于 2023-08-08  发布在  .NET
关注(0)|答案(2)|浏览(122)

如何在LiteDB中使用DbRef。我有CustomerJob的类。我希望客户存储其拥有的作业列表。
因此,在Customer类中,我需要根据我的理解有一个DbRef<Job> Jobs。我有几个问题。首先,DbRef不被识别为using LiteDB类型。第二,我不知道如何实施
Job.cs

namespace HMDCompare.Classes
{
  public class Job
  {
    public int id { get; set; }
    public string name { get; set; }
  }
}

字符串
Customer.cs

using LiteDB;

namespace HMDCompare.Classes
{
    public class Customer
    {
        [BsonId]
        public int Id { get; set; }

        public string Name { get; set; }
        public string[] Phones { get; set; }
        public bool IsActive { get; set; }

        public DbRef<Job> Jobs { get; set; }
    }
}


对于我在Visual Studio中获得的DbRef:找不到类型或命名空间名称“DbRef”
我正在使用C#/ASP.net 4.5和LiteDB 2.0.0-rc进行开发

fykwrbwg

fykwrbwg1#

我知道,我迟到了。但对于任何一个偶然发现的人来说:你应该使用BsonRef属性。模型类看起来像这样:

using LiteDB;

namespace HMDCompare.Classes
{
    public class Customer
    {
        [BsonId]
        public int Id { get; set; }

        public string Name { get; set; }
        public string[] Phones { get; set; }
        public bool IsActive { get; set; }
        [BsonRef("collectionName")]
        public Job[] Jobs { get; set; }
    }
}

字符串
您可以使用存储数据的集合的名称而不是collectionName,也可以省略它。

ijnw1ujt

ijnw1ujt2#

使用LiteDB.2.0.0-rc并遵循test page中的示例,对我来说工作得很好。

public IncludeDatabase() : base("mydb.db")
{
}

public LiteCollection<Folder> Folders { get { return this.GetCollection<Folder>("Folders"); } }
public LiteCollection<SubFolders> SubFolders { get { return this.GetCollection<Media>("SubFolders"); } }

protected override void OnModelCreating(BsonMapper mapper)
{
    mapper.Entity<SubFolder>()
        .DbRef(x => x.Folder, "Folders");
}

字符串
.....

var subFolder = new SubFolder()
{
    Name = file.Name,
    Folder = new Folder { Id = idFolder },
};

using (var db = new IncludeDatabase())
{                
    db.SubFolders.Insert(subFolder);
}


得到

using (var db = new IncludeDatabase())
{                
    return db.SubFolders
        .Include(x => x.Folder)
        .FindAll().ToList();
}

相关问题