2016-03-09 27 views
1

如何在LiteDB中使用DbRef。我有CustomerJob的課程。我希望客戶存儲客戶所擁有的工作清單。如何在LiteDB中使用DbRef

所以在客戶類中,我需要從我的理解中獲得一個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; } 
    } 
} 

爲DBREF我在Visual Studio中得到:類型或命名空間名稱DbRef'找不到

我在C#/ ASP.net 4.5,並與LiteDB 2.0.0 RC

+1

很多事情改變了V2版本,它似乎DBREF不再是一個類型但是一個函數,看看這個例子:https://github.com/mbdavid/LiteDB/blob/7aba1cd5417d3332eccfe365d061701195744fa2/LiteDB.Tests/Mapping/IncludeTest.cs – Gusman

+0

@Gusman很好找。我會仔細研究它,看看它是如何工作的。謝謝 –

回答

0

使用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(); 
}