使用用户定义的扩展方法创建RavenDb索引

时间:2013-11-29 11:02:06

标签: c# enums indexing ravendb

我想做这样的事情。

Map = entitys => entitys.Select(entity=> 
                                new { Query = new object[]
                                        {
                                           entity.Name,
                                           entity.MyEnumValue.MyExtentsionMethod()
                                         }
                                    });

我的枚举

public enum MyEnumValue
{
        [EnumMember(Value = "Value 1")]
        [Description("Value 1")]
        Value1,

        [EnumMember(Value = "Value 2")]
        [Description("Value 2")]
        Value2,  
}

MyExtensionMethod()会为我Enum指定Description的友好名称。

我知道问题是在创建索引期间用户定义的类不可用。所以我需要一种方法来实现这一点,使用反射或正确的方法来检索此枚举描述以进行索引。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

我建议使用Compilation Extensions。看看http://ravendb.net/docs/server/extending/plugins

您必须从AbstractDynamicCompilationExtension继承(如示例中的PalindromeDynamicCompilationExtension)。请记住将您的dll上传到RavenDB服务器的Plugins文件夹。

答案 1 :(得分:1)

这就是我最终要做的事情

Map = entitys => entitys.Select(entity=> 
                                new { Query = new object[]
                                        {
                                           entity.Name,
                                           new[]{"Value 1","Value 2"}[(int)entity.])
                                         }
                                    });

唯一的缺点是硬编码的字符串字符串,但它适用于我。