为什么我需要在索引中使用下划线命名属性?

瓦萨兹

鉴于我具有以下结构(删除了不必要的详细信息)

public class Product {
    public Guid Id { get; set; }
    public string Name { get; set; }
    public Manufacturer Manufacturer { get; set; }
}

public class Manufacturer {
    public Guid Id { get; set; }
    public string Name { get; set; }
}

如果我在乌鸦中存储了很多这类产品,并且想通过制造商ID(或其他一些东西)对它们进行索引,那么我会创建一个这样的索引(当然,在现实生活中,该索引还包含还有一些其他信息...)

public class ProductManufacturerIndex : AbstractIndexCreationTask<Product> {
    public ProductManufacturerIndex() {
        Map = products => from product in products
                          select new {
                              Manufacturer_Id = product.Manufacturer.Id,
                          };
    }
}

我的问题是,为什么我需要命名字段Manufacturer_Id?如果我未命名为Manufacturer_Id,则由于未对制造商ID列进行索引,因此在尝试查询索引时会出现异常。

基本上,为什么不能这样做?(这是我的第一个猜测)

public class ProductManufacturerIndex : AbstractIndexCreationTask<Product> {
    public ProductManufacturerIndex() {
        Map = products => from product in products
                          select new {
                              product.Manufacturer.Id,
                          };
    }
}
放开拉希恩

RavenDB使用一个命名约定。如果您没有正确命名字段,那么它将不知道如何映射事物。

在这种情况下,您使用的第二个索引具有Id属性,但是RavenDB无法知道您映射了制造商的ID,而不是根ID。

这就是为什么我们有这个约定。如果确实需要,可以更改它,但是通常不建议这样做。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么在我的测试项目中使用下划线创建默认命名空间

为什么我需要快速下划线?

为什么Spanner在LIKE中使用下划线执行全表扫描,而使用%则利用索引?

为什么命名为“下划线”或“ lodash”?

为什么在LIKE过滤器中使用下划线字符会给我所有结果?

需要清楚仅在scala中使用单个下划线

为什么我的javascript getter / setter要求下划线?

为什么我的预赛匹配阻止下划线?(PHP)

在Ruby中使用带下划线的下划线

为什么HTTP服务器禁止在HTTP标头名称中使用下划线

为什么在Scala中使用下划线时仅定义一次值

他们为什么在实例名称中使用下划线?

为什么我不能在Linux上使用前导或尾随下划线ping地址

为什么在 c 中为结构使用下划线?

JavaScript -TypeError 当我在命名对象数组和 get 和 set 方法中使用下划线时

为什么在ObservableList下划线?

在ExUnit测试中使用下划线(_)

在C中使用双下划线

在PHP代码中使用下划线

为什么BEM经常使用两个下划线而不是一个下划线?

为什么我需要在 shareReplay 中使用管道?

为什么我需要在Android中使用super()?

为什么我需要在 Django 中使用 SlugField?

为什么程序员通常在一些函数变量中使用下划线前缀?

为什么我们在此表达式中使用_ str.replace(/ [\ W _] / g,'').toLowerCase(); 我们也可以使用/ [\ W] / g,但是为什么要使用下划线?

Getter 方法不需要下划线来引用。为什么?

使用 Windows 重命名将单个下划线替换为双下划线?

为什么下划线比连字符的下划线更好?

为什么我必须使用 np.string_?为什么我不能使用没有下划线的 np.string ?