У меня есть несколько отчетов по документам NoSQL, которые необходимо регулярно импортировать на сервер. Идея состоит в том, чтобы использовать LiteDB и читать их как Type, а затем преобразовать в BSON для отправки HTTP POST для импорта в NoSQL DB на сервере. Мне удалось сделать это успешно, но, к сожалению, веб-API готов BsonValue как ноль
void Main()
{
using (var db = new LiteDatabase(@"MyData.db"))
{
var table = db.GetCollection<Customer>("customers");
var customer = new Customer
{
Name = "John Doe",
Phones = new string[] { "8000-0000", "9000-0000" },
Age = 39,
IsActive = true
};
table.Insert(customer);
var document = table.FindAll<TypeA>();
// Convert to BSON to POST because I have many and wanted to make a single method to post all types
// by converting the type Type into BSON
var bson = documents.Select(s => BsonMapper.Global.ToDocument(s)).ToList();
// POST TO API
using (HttpClient client = new HttpClient())
{
// Set the Accept header for BSON.
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/bson"));
// Send POST request.
MediaTypeFormatter bsonFormatter = new BsonMediaTypeFormatter();
var result = await client.PostAsync(url, bson, bsonFormatter);
// Print Result
}
}
}
public class TypeA
{
public string Name { get; set; }
public DateTime CreateDate { get; set; }
public bool IsActive { get; set; }
}
public class TypeB
{
public string Name { get; set; }
public DateTime CreateDate { get; set; }
public bool IsActive { get; set; }
}
Это то, что веб-API получает вместо значения BSON
[{\"Name\":{\"Type\":1,\"RawValue\":null,\"AsArray\":null,\"AsDocument\":null,\"AsBinary\":null,\"AsBoolean\":false,\"AsString\":null,\"AsInt32\":0,\"AsInt64\":0,\"AsDouble\":0.0,\"AsDecimal\":0.0,\"AsDateTime\":\"0001-01-01T00:00:00\",\"AsObjectId\":null,\"AsGuid\":\"00000000-0000-0000-0000-000000000000\",\"IsNull\":true,\"IsArray\":false,\"IsDocument\":false,\"IsInt32\":false,\"IsInt64\":false,\"IsDouble\":false,\"IsDecimal\":false,\"IsNumber\":false,\"IsBinary\":false,\"IsBoolean\":false,\"IsString\":false,\"IsObjectId\":false,\"IsGuid\":false,\"IsDateTime\":false,\"IsMinValue\":false,\"IsMaxValue\":false}