Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Ravendb4.0存储原始json_C#_Json_Json.net_Ravendb_Ravendb4 - Fatal编程技术网

C# Ravendb4.0存储原始json

C# Ravendb4.0存储原始json,c#,json,json.net,ravendb,ravendb4,C#,Json,Json.net,Ravendb,Ravendb4,我正在使用NLOG记录JsonLayout,并希望将这些日志存储在Ravendb4.0中基本上,我正在尝试使用ravendb.NET客户端将原始json存储到ravendb中。 我在Ravendb3.5中有一个可行的解决方案:使用继承自“RavenJObject”的类,但该功能在4.0中被去除 我通过将json反序列化为动态对象并存储动态对象来实现它。但这会将文档存储在一个毫无意义的“JObjects”集合中。将json转换为动态并再次转换回json似乎也会增加开销 var ob

我正在使用NLOG记录JsonLayout,并希望将这些日志存储在Ravendb4.0中基本上,我正在尝试使用ravendb.NET客户端将原始json存储到ravendb中。

我在Ravendb3.5中有一个可行的解决方案:使用继承自“RavenJObject”的类,但该功能在4.0中被去除

我通过将json反序列化为动态对象并存储动态对象来实现它。但这会将文档存储在一个毫无意义的“JObjects”集合中。将json转换为动态并再次转换回json似乎也会增加开销

        var obj = JsonConvert.DeserializeObject<dynamic>(jsonString);
        session.Store(obj);
var obj=JsonConvert.DeserializeObject(jsonString);
会话存储(obj);
我知道可以使用UI(raven studio)。但是我找不到一种使用.Net客户端的方法

我认为可以使用http api,使用原始json进行post。但是我还没有找到任何关于这个的文档


谁能帮我?任何建议都将不胜感激

这里有一个代码示例,允许您对泛型类型进行操作并正确分配集合:

[Fact]
public void RawJson()
{
    using (var store = GetDocumentStore())
    {
        using (var session = store.OpenSession())
        {
            var json = "{ 'Name' : 'John', '@metadata' : { '@collection': 'Users' } }";
            var blittableJson = ParseJson(session.Advanced.Context, json);

            var command = new PutDocumentCommand("users/1", null, blittableJson);
            session.Advanced.RequestExecutor.Execute(command, session.Advanced.Context);
        }

        using (var session = store.OpenSession())
        {
            var user = session.Load<User>("users/1");
            Assert.Equal("John", user.Name);
        }
    }
}

public BlittableJsonReaderObject ParseJson(JsonOperationContext context, string json)
{
    using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(json)))
    {
        return context.ReadForMemory(stream, "json");
    }
}

public class User
{
    public string Id { get; set; }

    public string Name { get; set; }
}
[事实]
public-void-RawJson()
{
使用(var store=GetDocumentStore())
{
使用(var session=store.OpenSession())
{
var json=“{'Name':'John','@metadata':{'@collection':'Users'}”;
var blittableJson=ParseJson(session.Advanced.Context,json);
var command=new PutDocumentCommand(“users/1”,null,blittableJson);
session.Advanced.RequestExecutor.Execute(命令,session.Advanced.Context);
}
使用(var session=store.OpenSession())
{
var user=session.Load(“用户/1”);
Assert.Equal(“John”,用户名);
}
}
}
公共BlittableJsonReaderObject ParseJson(JsonOperationContext上下文,字符串json)
{
使用(var stream=newmemoryStream(Encoding.UTF8.GetBytes(json)))
{
返回context.ReadForMemory(stream,“json”);
}
}
公共类用户
{
公共字符串Id{get;set;}
公共字符串名称{get;set;}
}