You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取RavenDB中对应实体的正确集合名称?

如何获取RavenDB中对应实体的正确集合名称?

嘿,这个问题我太熟悉了!RavenDB自动复数化实体名生成集合的机制,确实偶尔会让人在写查询的时候卡壳,不过有几个非常靠谱的方法能帮你精准拿到正确的集合名:

  • 用RavenDB内置的命名规则方法(最推荐)
    RavenDB本身提供了DocumentConventions.GetCollectionName方法,这就是它内部用来生成集合名的逻辑,完全和系统保持一致。不管是默认的复数化,还是你自定义了集合命名规则,它都能返回正确结果。
    比如针对你的PhoneBook实体,代码可以这么写:

    // 假设你已经初始化了DocumentStore实例
    var collectionName = documentStore.Conventions.GetCollectionName(typeof(PhoneBook));
    // 这里拿到的就是"PhoneBooks"
    

    如果你手里有实体实例,也可以直接传实例进去:

    var myPhoneBook = new PhoneBook();
    var collectionName = documentStore.Conventions.GetCollectionName(myPhoneBook);
    
  • 自定义实体集合名(如果需要)
    要是你不想用默认的复数化规则,想给某个实体指定专属的集合名,直接给实体类加CollectionName特性就行:

    [CollectionName("MySpecialPhoneBooks")]
    public class PhoneBook
    {
        // 你的实体属性
    }
    

    这时候再调用GetCollectionName方法,返回的就是你指定的这个自定义名称啦。

  • RQL查询里的小技巧
    如果你是在写RQL语句(比如你示例里的批量删除查询),除了提前拿到集合名代入,还可以用RavenDB的@collection占位符,不过本质上还是需要先获取正确的集合名传入参数,所以前面的方法才是基础。

用这些方法,就再也不用手动猜复数名啦,尤其是碰到像Person变People这种不规则复数的情况,完全能避免出错。

备注:内容来源于stack exchange,提问作者Stephan Steiner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 08:54:38