我们已经查看了问题以及RavenDb文档。有一点在RavenDb Index Replication Docs,但似乎没有任何指导如何/何时/在哪里创建IndexReplicationDestination如何安装和设置RavenDb索引复制
我们的用例非常简单(这是一个秒杀)。我们目前创建新的对象(Cows)并将它们存储在Raven中。我们有几个使用LINQ动态创建的查询(例如from c in session.Query<Cows> select c
)。
现在我看不到应该在哪里定义要复制的索引。有任何想法吗?我已经得到了束保持并把它添加到服务器目录(我假设它应该在哪里RavenDB.1.0.499\server\Plugins
包含RavenDB.1.0.499\server
Raven.Server.exe)
编辑:感谢Ayende ...下面的答案并在ravendb团体帮助。当时有一个facepalm。不管这里有一些细节可以帮助别人。它确实很容易,而且确实是'正常工作':
a)确保插件被拾取。您可以在统计信息中查看这些信息 - 可通过/ localhost:8080/stats url进行查看(默认设置)。您应该在'Extensions'中看到有关IndexReplication包的条目。
如果不存在,保证了的DLL(包和服务器)的版本相同
b)确保您要复制已创建的索引。它们可以通过客户端API或HTTP API创建。
客户端API:
public class Cows_List : AbstractIndexCreationTask<Cow>
{
public Cows_List()
{
Map = cows => from c in cows select new { c.Status };
Index(x => x.Status, FieldIndexing.Analyzed);
}
}
HTTP API(在工作室): //奶牛/列表 docs.Cows 。选择(Q =>新的{状态= q.Status})
c)创建复制文档。这里的线索是DOCUMENT。像存储的所有内容一样,它也是一个文档。所以,创建必须存储在DB后:
VAR replicationDocument =新Raven.Bundles.IndexReplication.Data.IndexReplicationDestination { ID为 “乌鸦/ IndexReplication/Cows_List”,ColumnsMapping = {{ “状态”,“状态“}}, ConnectionStringName =”Reports“,PrimaryKeyColumnName =”Id“, TableName =”cowSummaries“ }; session.Store(replicationDocument); sesson.SaveChanges();
d)确保您在客户端(例如MVC应用程序或控制台)
E)创建RDBMS架构如下。我有一个表中的 'cowReports':
CREATE TABLE [DBO] [cowSummaries]( [ID]为nvarchar NULL, [状态] NCHAR NULL)
我的具体问题并没有添加索引文件到商店。我知道。 facepalm。当然应有尽有是一个文件。奇迹般有效!
感谢Ayende - 这是我发现的两件事情中的一个棘手与RavenDb建立(其余的一直非常简单) 1)何时/何时创建ReplicationDocument,是否每次会话一次?或应用程序?我猜应用程序...)2)会话管理与ASP.Net(我不想注入IDocumentStore - 这是一个广泛的接口存根或模拟) - 我宁愿有一个对话(如nHiberante)。 – penderi
确定会话已排序(我正在使用与nHibernate/Monorail类似的实践 - 将会话存储在HttpContext中)。 但是恐怕我还不清楚何时/如何创建rteplication文档和索引...任何指导赞赏。 – penderi
另外....我使用动态索引进行查询。我将在哪里设置复制的专用索引?我假设同一个地方。这是一个每个Web应用程序每个场景一次(我在想app_start)? – penderi