LiteDB 多个 Column/Field ID
LiteDB Multiple Column/Field ID
我有一个有多个字段的 class。
比方说:
class MyClass {
public int x {get; set;}
public int y {get; set;}
public int z {get; set;}
}
我想将 LiteDB 与 class 一起使用,并让它同时使用 x 和 y 作为键。
例如:
MyClass{x: 0, y: 0, z:0}
MyClass{x: 0, y: 1, z:0}
在我的 LiteDB 数据库中将被视为 2 个不同的条目。
所以我基本上想要这样的东西:
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 文档中寻找解决方案,但找不到任何东西。这可能吗?如果是这样,我很想了解如何实现我的目标。
谢谢!
在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 })
我有一个有多个字段的 class。 比方说:
class MyClass {
public int x {get; set;}
public int y {get; set;}
public int z {get; set;}
}
我想将 LiteDB 与 class 一起使用,并让它同时使用 x 和 y 作为键。 例如:
MyClass{x: 0, y: 0, z:0}
MyClass{x: 0, y: 1, z:0}
在我的 LiteDB 数据库中将被视为 2 个不同的条目。
所以我基本上想要这样的东西:
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 文档中寻找解决方案,但找不到任何东西。这可能吗?如果是这样,我很想了解如何实现我的目标。
谢谢!
在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 })