Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# RavenDB多态性指数_C#_Database_Ravendb - Fatal编程技术网

C# RavenDB多态性指数

C# RavenDB多态性指数,c#,database,ravendb,C#,Database,Ravendb,我和RavenDB一起工作,我想做点什么。我有一个基本类型Principal,从中派生出两个类:User和ApplicationInstance。在我的应用程序中,必须经常创建和存储User和ApplicationInstance的实例。但问题是,我还需要能够一次查询存储在数据库中的所有主体对象,确定给定主体是用户还是ApplicationInstance,然后查询整个用户或ApplicationInstance对象 我该怎么做?你想做什么?如果最终结果是查询所有主体,然后加载整个用户或AppI

我和RavenDB一起工作,我想做点什么。我有一个基本类型Principal,从中派生出两个类:User和ApplicationInstance。在我的应用程序中,必须经常创建和存储User和ApplicationInstance的实例。但问题是,我还需要能够一次查询存储在数据库中的所有主体对象,确定给定主体是用户还是ApplicationInstance,然后查询整个用户或ApplicationInstance对象


我该怎么做?

你想做什么?如果最终结果是查询所有主体,然后加载整个用户或AppInstance,为什么不直接查询所有用户或所有AppInstance

Raven不会存储基类;它将只存储最派生的类型(在您的情况下是User或AppInstance)。因此,您将拥有一个用户集合和一个AppInstance集合

如果您真的需要同时查询这两个,可以使用。您还可以更改实体名称并将两者存储在单个主体集合中

但是,在不知道自己要做什么的情况下,很难推荐解决方案。解释您试图做什么,我们将告诉您正确的方法。

您可以定义一个将
用户
应用程序安装
集合都用作源的

如果使用C代码定义索引(通过实现
AbstractMultiMapIndexCreationTask
),则必须调用
AddMap
两次才能实现(如上面的博客文章链接所示)

如果您使用Raven Studio定义索引,只需单击添加地图按钮,您将获得一个新的文本区域,允许您定义其他地图


但是,请注意,两个映射的输出结构必须具有相同的属性(与SQL中的UNION非常相似)。

我正在尝试管理对资源的访问。数据库中存储的许多文档都包含一种ACL,该ACL对应于主体对象(其ID)和所述主体拥有的权限(例如读、写、删除、更改所有权)。我试图,给定ACL中主体的Id,查询通用主体对象或特定AppInstance或用户。我的意思是:
Principal p=session.Load(id);如果(p是AppInstance){…}elseif(p是User){…}
或者我只是有错误的想法吗?加载(id)时会发生什么?你得到了什么?我希望Raven能够返回正确的对象,不管您作为类型参数发送了什么。您甚至可以使用转换结果将原则加载到结果文档的属性中,以便在服务器上保留更多内容-