我有一个有多个字段的类。举个例子:
class MyClass {
public int x {get; set;}
public int y {get; set;}
public int z {get; set;}
}我想对那个类使用LiteDB,并让它同时使用x和y作为键。举个例子:
MyClass{x: 0, y: 0, z:0}
MyClass{x: 0, y: 1, z:0}将被视为我的LiteDB数据库中的两个不同条目。
所以我基本上想要这样的东西:
var mapper = BsonMapper.Global;
mapper
.Entity<MyClass>()
.Id(c => new {c.x, c.y});
var db = new LiteDatabase("PATH_HERE", mapper);显然,Id(c => new {c.x,c.y});不起作用。我也试过
.Id(c => c.x)
.Id(c => c.y);但它也不起作用。我试着在LiteDB文档中寻找解决方案,但是什么也找不到。这个是可能的吗?如果是这样的话,我很想知道如何实现我的目标。
谢谢!
发布于 2018-01-03 20:09:55
在BsonDocument中,_id必须是单个值,没有复合键。但是这个值可以是另一个文档。因此,您可以使用以下命令:
class MyId {
public int x { get; set; }
public int y { get; set; }
}
class MyClass {
public MyId Id { get; set; }
public int y { get; set; }
}现在,您可以使用
col.Find(x => x.Id = new Id { x = 0, y = 1 })https://stackoverflow.com/questions/48064678
复制相似问题