标签: ravendb4

RavenDB:如何防止 $type 被保存到动态类型属性?

$type当我保存动态类型值时,有没有办法防止添加属性?

当我保存这个时:

new Activity {
    Name = "FormFieldDeleted",
    Body =  new {
        MyDeletedFormField(),
        MyCompleteForm()
    }
}
Run Code Online (Sandbox Code Playgroud)

我明白了

<>f__AnonymousType1`2[[MyProject.Domains.Forms.Models.FormField, MyProject.Domains.Forms],[MyProject.Domains.Forms.Entities.FormRegistration, MyProject.Domains.Forms]], MyProject.Api.Forms
Run Code Online (Sandbox Code Playgroud)

但是当我尝试获取这个保存的实体时,它会崩溃并出现以下异常。我知道它缺少项目引用,但我真的不想添加该引用(我不想从控制台应用程序引用 API)。我最好只是阻止$type财产。

/usr/local/share/dotnet/dotnet path/MyProject/MyProject/src/MyProject.Tasks.MapActivities/bin/Debug/netcoreapp3.1/MyProject.Tasks.MapActivities.dll
Unhandled exception. System.InvalidOperationException: Could not convert document 31317d58-db9e-4f60-8dee-b8593f3e06c0 to entity of type MyProject.Domains.Core.Entities.Activity
 ---> Newtonsoft.Json.JsonSerializationException: Error resolving type specified in JSON '<>f__AnonymousType1`2[[MyProject.Domains.Forms.Models.FormField, MyProject.Domains.Forms],[MyProject.Domains.Forms.Entities.FormRegistration, MyProject.Domains.Forms]], MyProject.Api.Forms'. Path 'Body.$type'.
 ---> Newtonsoft.Json.JsonSerializationException: Could not load assembly 'MyProject.Api.Forms'
....
Run Code Online (Sandbox Code Playgroud)

c# dynamic ravendb ravendb4

4
推荐指数
1
解决办法
127
查看次数

RavenDB 4.0 存储原始 json

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

我在 RavenDB 3.5 中有一个可行的解决方案:使用继承自“RavenJObject”的类,但此功能在 4.0 中已被废弃。

我通过将 json 反序列化为动态并存储动态对象来使其工作。但这会将文档存储在无意义的“JObjects”集合中。将 json 转换为动态并再次转换回 json 似乎也有开销。

        var obj = JsonConvert.DeserializeObject<dynamic>(jsonString);
        session.Store(obj);
Run Code Online (Sandbox Code Playgroud)

我知道可以使用用户界面(raven studio)。但我找不到使用 .Net 客户端执行此操作的方法。

我认为也许可以使用 http api,使用原始 json 进行发布。但我还没有找到任何关于此的文档。

谁能帮帮我?任何建议表示赞赏!

c# json json.net ravendb ravendb4

4
推荐指数
1
解决办法
671
查看次数

标签 统计

c# ×2

ravendb ×2

ravendb4 ×2

dynamic ×1

json ×1

json.net ×1