RavenDB - Репликация индекса - PullRequest
0 голосов
/ 19 февраля 2012

Я пытаюсь заставить репликацию индекса работать, и я не могу заставить ее реплицировать данные в мою базу данных SQL. Я посмотрел на Документы и другой элемент Stackoverflow здесь , но я должен что-то упустить. Может кто-то указать мне верное направление? Я думаю, что я близко.

Индекс "Вопросы / Проголосовать" существует в моем экземпляре Raven.

Код:

class Program
{
    static void Main(string[] args)
    {
        CreateRdbmsSchema();

        using (var documentStore = new DocumentStore { Url = "http://localhost:8080" }.Initialize())
        {
            documentStore.DatabaseCommands.PutIndex("Questions/VoteTotals",
                                                    new IndexDefinitionBuilder<Question>
                                                    {
                                                        Map = questions => from question in questions
                                                                           select new
                                                                           {
                                                                               question.Title,
                                                                               VoteCount = question.Votes.Count
                                                                           }
                                                    },
                                                    overwrite: true);

            using(var s = documentStore.OpenSession())
            {
                var q = new Question
                {
                    Id = "questions/6",
                    Title = "How to replicate to SQL Server!?",
                    Votes = new List<Vote>
                    {
                        new Vote {Up = true, Comment = "Good!"},
                        new Vote {Up = false, Comment = "Nah!"},
                        new Vote {Up = true, Comment = "Nice..."},
                        new Vote {Up = false, Comment = "No!"},
                    }
                };



            var replicationDocument = new Raven.Bundles.IndexReplication.Data.IndexReplicationDestination
                {
                    Id = "Questions/VoteTotal",
                    ColumnsMapping =
                        {
                            {"Title", "Title"},
                            {"UpVotes", "UpVotes"},
                            {"DownVotes", "DownVotes"},
                        },
                    ConnectionStringName = "Reports",
                    PrimaryKeyColumnName = "Id",
                    TableName = "QuestionSummaries"
                };


                s.Store(q);
            s.Store(replicationDocument);
                s.SaveChanges();
            }

        }
    }

    private static void CreateRdbmsSchema()
    {
        var connectionStringSettings = ConfigurationManager.ConnectionStrings["Reports"];
        var providerFactory = DbProviderFactories.GetFactory(connectionStringSettings.ProviderName);
        using (var con = providerFactory.CreateConnection())
        {
            con.ConnectionString = connectionStringSettings.ConnectionString;
            con.Open();

            using (var dbCommand = con.CreateCommand())
            {
                dbCommand.CommandText = @"IF OBJECT_ID('QuestionSummaries') is not null 
                                                DROP TABLE [dbo].[QuestionSummaries]
                                        ";
                dbCommand.ExecuteNonQuery();

                dbCommand.CommandText = @"CREATE TABLE [dbo].[QuestionSummaries]
                                        (
                                                [Id] [nvarchar](50) NOT NULL,
                                                [VoteCount] [int] NOT NULL,
                                                [Title] [nvarchar](255) NOT NULL
                                        )
                                        ";
                dbCommand.ExecuteNonQuery();
            }
        }
    }
}


public class Question
{
    public string Id { get; set; }
    public string Title { get; set; }

    public List<Vote> Votes { get; set; }
}

public class Vote
{
    public bool Up { get; set; }
    public string Comment { get; set; }
}

EDIT

За предложение Айенде я добавил

<connectionStrings>
  <add name="Reports" providerName="System.Data.SqlClient" connectionString="Data Source=.\sqlexpress2008r2;Initial Catalog=Test;Integrated Security=True"/>

В файл Raven.Server.exe.config, но все еще возникают проблемы.

1 Ответ

1 голос
/ 20 февраля 2012

Scarpacci, Возможно, вы не добавили строку подключения к server app.config.

...