【发布时间】:2011-11-03 16:25:06
【问题描述】:
r我已经查看了问题,并且确实查看了 RavenDb 文档。 RavenDb Index Replication Docs 有一点,但似乎没有任何关于如何/何时/在何处创建 IndexReplicationDestination 的指导
我们的用例非常简单(这是一个尖峰)。我们目前创建新对象(牛)并将它们存储在 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);
}
}
HTTP API(在工作室中): //奶牛/列表 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 = "报告",PrimaryKeyColumnName = "Id", TableName = "cowSummaries" }; session.Store(replicationDocument); 会话.SaveChanges();
d) 确保您在 CLIENT(例如 MVC 应用程序或控制台)中具有以下内容
e) 创建 RDBMS 模式。我在“cowReports”中有一张表格:
创建表 [dbo].[cowSummaries]( [Id] nvarchar NULL, [状态] nchar NULL)
我的特殊问题是没有将索引文档添加到存储中。我知道。 掌心。当然一切都是文档。像魅力一样工作!
【问题讨论】:
标签: replication ravendb