Как сохранить JSON в RavenDB? - PullRequest
5 голосов
/ 10 ноября 2011

Я хочу взять существующие данные и поместить их в RavenDB.

Мои существующие данные были в формате XML, поэтому я преобразовал их в JSON.

Каким должен быть мой следующий шаг? Могу ли я сохранить его в RavenDB как есть? Нужно ли создавать новые объекты для его хранения?

Заранее спасибо!

Ответы [ 2 ]

6 голосов
/ 19 апреля 2014

Не обязательно отправлять контент в RavenDB с помощью клиента RavenDB, а также нет необходимости сначала заполнять модель домена.Это ненужное усилие, которое только усложняет процесс отправки / вставки / миграции / импорта данных.

Вы можете отправлять документы в формате JSON напрямую в RavenDB, используя HTTP API , в частности, вы можете захотетьпросмотрите раздел «Операции с одним документом», чтобы найти простые примеры, которые (в настоящее время) показывают примеры с использованием curl.

Рассмотрим следующий код .NET:

var url = string.Format("http://ravendb-server:8080/databases/{0}/docs/{1}", databaseName, docId);
var webRequest = System.Net.HttpWebRequest.CreateHttp(url);
webRequest.Method = "PUT";
webRequest.ContentType = "application/json";
webRequest.Headers["Raven-Entity-Name"] = entityName;
var stream = webRequest.GetRequestStream();
using (var writer = new System.IO.StreamWriter(webRequest.GetRequestStream()))
{
    writer.Write(json);
}
var webResponse = webRequest.GetResponse();
webResponse.Close();

Приведенный выше фрагмент кода позволяет вамотправить действительный документ JSON в конкретную базу данных и определенную коллекцию документов с указанным идентификатором.Выбор базы данных и назначение идентификатора осуществляется через URL-пути, а Коллекция документов указывается с заголовком метаданных Raven-Entity-Name.

. дополнительные заголовки метаданных , которые вы, возможно, захотите отправить, например,как Raven-Clr-Type или Last-Modified, но они не обязательны.

1 голос
/ 10 ноября 2011

Я полагаю, что ваши json-данные представляют собой данные домена вашего приложения, и вы хотите иметь классы со свойствами для работы с этими данными в вашем приложении, верно?

Если это так, выВам нужно написать простое приложение для импорта, которое заполняет модель вашего домена один раз, а затем сохраняет все ваши объекты как обычные документы RavenDB, точно так же, как вы сохраняете любой другой объект с RavenDB.

Имеет ли это смысл?

...