首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LiteDB多列/字段ID

LiteDB多列/字段ID
EN

Stack Overflow用户
提问于 2018-01-03 00:40:56
回答 1查看 2K关注 0票数 0

我有一个有多个字段的类。举个例子:

代码语言:javascript
复制
class MyClass {
    public int x {get; set;}
    public int y {get; set;}
    public int z {get; set;}
}

我想对那个类使用LiteDB,并让它同时使用x和y作为键。举个例子:

代码语言:javascript
复制
MyClass{x: 0, y: 0, z:0}
MyClass{x: 0, y: 1, z:0}

将被视为我的LiteDB数据库中的两个不同条目。

所以我基本上想要这样的东西:

代码语言:javascript
复制
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});不起作用。我也试过

代码语言:javascript
复制
.Id(c => c.x)
.Id(c => c.y);

但它也不起作用。我试着在LiteDB文档中寻找解决方案,但是什么也找不到。这个是可能的吗?如果是这样的话,我很想知道如何实现我的目标。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-03 20:09:55

BsonDocument中,_id必须是单个值,没有复合键。但是这个值可以是另一个文档。因此,您可以使用以下命令:

代码语言:javascript
复制
class MyId {
    public int x { get; set; }
    public int y { get; set; }
}

class MyClass {
    public MyId Id { get; set; }
    public int y { get; set; }
}

现在,您可以使用

代码语言:javascript
复制
col.Find(x => x.Id = new Id { x = 0, y = 1 })
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48064678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档