r我已经查看了这些问题以及 RavenDb 文档。有一点在RavenDb 索引复制文档 http://ravendb.net/bundles/index-replication但似乎没有关于如何/何时/何处创建 IndexReplicationDestination 的任何指导
我们的用例非常简单(它是一个尖峰)。我们当前创建新对象(奶牛)并将它们存储在 Raven 中。我们有几个使用 LINQ 动态创建的查询(例如from c in session.Query<Cows> select c
).
现在我看不到应该在哪里定义要复制的索引。有任何想法吗?我已经掌握了该捆绑包并将其添加到服务器目录中(我假设它应该位于RavenDB.1.0.499\server\Plugins
where RavenDB.1.0.499\server
包含 Raven.Server.exe)
Edit:谢谢 Ayende...下面和 ravendb 小组中的答案有帮助。有一个facepalm片刻。无论如何,这里的一些细节可能对其他人有帮助。这确实非常简单,而且确实“有效”:
a) 确保插件正在被拾取。您可以在统计信息中查看这些信息 - 可通过 /localhost:8080/stats url 获取(假设默认设置)。您应该会在“扩展”中看到与 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(在工作室中):
//奶牛/列表
文档.Cows
.Select(q => new {Status = q.Status})
c) 创建复制文档。这里的线索是文档。就像存储的所有内容一样,它也是一个文档。因此创建后必须将其存储在 Db 中:
varreplicationDocument = new Raven.Bundles.IndexReplication.Data.IndexReplicationDestination
{
Id = "Raven/IndexReplication/Cows_List", ColumnsMapping = { {"状态", "状态"} },
ConnectionStringName =“报告”,PrimaryKeyColumnName =“Id”,
表名 = "cowSummaries"
};
session.Store(replicationDocument);
会话.SaveChanges();
d) 确保客户端中有以下内容(例如 MVC 应用程序或控制台)
e) 创建 RDBMS 模式。我在“cowReports”中有一张表:
创建表 [dbo].[cowSummaries](
[Id] nvarchar NULL,
[状态] nchar NULL)
我的具体问题是没有将索引文档添加到存储中。我知道。facepalm。当然一切是一个文件。奇迹般有效!