pen*_*eri 5 replication ravendb
我已经看过问题,甚至是RavenDb文档.在RavenDb索引复制文档中有一点但是似乎没有关于如何/何时/何处创建IndexReplicationDestination的指导
我们的用例非常简单(它是一个尖峰).我们目前创建新对象(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获取(假设默认设置).您应该在"扩展"中看到有关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);
}
}
Run Code Online (Sandbox Code Playgroud)
HTTP API(在工作室中):// Cows/List docs.Cows .Select(q => new {Status = q.Status})
c)创建复制文档.这里的线索是文件.就像存储的所有内容一样,它也是一个文档.所以创建之后必须存储在Db中:
var replicationDocument = new Raven.Bundles.IndexReplication.Data.IndexReplicationDestination {Id ="Raven/IndexReplication/Cows_List",ColumnsMapping = {{"Status","Status"}},ConnectionStringName ="Reports",PrimaryKeyColumnName ="Id", TableName ="cowSummaries"}; session.Store(replicationDocument); sesson.SaveChanges();
d)确保您在CLIENT中有以下内容(例如MVC应用程序或控制台)
e)创建RDBMS模式.我在'cowReports'中有一个表:
CREATE TABLE [dbo].[cowSummaries]([Id] nvarchar NULL,[Status] nchar NULL)
我的特殊问题是没有将索引文档添加到商店.我知道.facepalm.当然一切都是文件.奇迹般有效!