Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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# RavenDB:从3690升级到3800后使用ScriptedPatchCommand时出现异常_C#_Ravendb - Fatal编程技术网

C# RavenDB:从3690升级到3800后使用ScriptedPatchCommand时出现异常

C# RavenDB:从3690升级到3800后使用ScriptedPatchCommand时出现异常,c#,ravendb,C#,Ravendb,此方法将资金从一个帐户(用户)转移到另一个帐户(视频游戏机),并设置用户忙VGM的标志。 相同的源代码引发异常: public async Task<decimal> BusyVgmBy(string vgmId, string targetId, string billingSrc, string billingDst, decimal money, bool dir = true) { var result = await _ctx.AsyncDataba

此方法将资金从一个帐户(用户)转移到另一个帐户(视频游戏机),并设置用户忙VGM的标志。 相同的源代码引发异常:

public async Task<decimal> BusyVgmBy(string vgmId, string targetId, string billingSrc, string billingDst, decimal money, bool dir = true)
    {
        var result = await _ctx.AsyncDatabaseCommands.BatchAsync(new ICommandData[]
        {
            new ScriptedPatchCommandData
            {
                Key = vgmId,
                Patch = new ScriptedPatchRequest
                {
                    Script = @"this.BusyById = targetId;",
                    Values = {{"targetId", dir?targetId:null}}
                }
            },
            new ScriptedPatchCommandData
            {
                Key = targetId,
                Patch = new ScriptedPatchRequest
                {
                    Script = @"this.Vgm = vgmId;",
                    Values = {{"vgmId", dir?vgmId:null}}
                }
            },
            new ScriptedPatchCommandData
            {
                Key = billingSrc,
                Patch = new ScriptedPatchRequest
                {
                    Script = @"this.Balance -= money;",
                    Values = {{"money", money}}
                }
            },
            new ScriptedPatchCommandData
            {
                Key = billingDst,
                Patch = new ScriptedPatchRequest
                {
                    Script = @"this.Balance += money;output(this.Balance)",
                    Values = {{"money", money}}
                }
            }
        });
        return result[3].AdditionalData.SelectToken("Debug[0]").Value<decimal>();
    }
    System.InvalidOperationException: Unable to execute JavaScript:
this.BusyById = targetId; ---> System.MissingMethodException: Method not found:
'Void Jint.Native.Object.ObjectInstance.set_NullPropagation(Boolean)'.
   at Raven.Database.Json.JintOperationScope.ToJsObject(Engine engine, RavenJObj
ect doc, String propertyName)
   at Raven.Database.Json.ScriptedJsonPatcher.ApplySingleScript(RavenJObject doc
, ScriptedPatchRequest patch, Int32 size, String docId, ScriptedJsonPatcherOpera
tionScope scope) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Json\ScriptedJso
nPatcher.cs:line 112
   --- End of inner exception stack trace ---
   at Raven.Database.Json.ScriptedJsonPatcher.ApplySingleScript(RavenJObject doc
, ScriptedPatchRequest patch, Int32 size, String docId, ScriptedJsonPatcherOpera
tionScope scope) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Json\ScriptedJso
nPatcher.cs:line 151
   at Raven.Database.Json.ScriptedJsonPatcher.Apply(ScriptedJsonPatcherOperation
Scope scope, RavenJObject document, ScriptedPatchRequest patch, Int32 size, Stri
ng docId) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Json\ScriptedJsonPatche
r.cs:line 81
   at Raven.Database.Actions.PatchActions.<>c__DisplayClass30.<ApplyPatch>b__28(
JsonDocument jsonDoc) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Actions\Pat
chActions.cs:line 239
   at Raven.Database.Actions.PatchActions.ApplyPatchInternal(String docId, Etag
etag, TransactionInformation transactionInformation, Func`2 patcher, Func`1 patc
herIfMissing, Func`1 getDocsCreatedInPatch, Func`1 getDebugActions, Boolean debu
gMode, Boolean skipPatchIfEtagMismatch, String[] participatingIds) in c:\Builds\
RavenDB-Stable-3.0\Raven.Database\Actions\PatchActions.cs:line 107
   at Raven.Database.Actions.PatchActions.ApplyPatch(String docId, Etag etag, Sc
riptedPatchRequest patchExisting, ScriptedPatchRequest patchDefault, RavenJObjec
t defaultMetadata, TransactionInformation transactionInformation, Boolean debugM
ode, String[] participatingIds) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\A
ctions\PatchActions.cs:line 269
   at Raven.Database.Extensions.CommandExtensions.Execute(ICommandData self, Doc
umentDatabase database, BatchResult batchResult, String[] participatingIds) in c
:\Builds\RavenDB-Stable-3.0\Raven.Database\Extensions\CommandExtensions.cs:line
85
   at Raven.Database.Extensions.CommandExtensions.ExecuteBatch(ICommandData self
, DocumentDatabase database, String[] participatingIds) in c:\Builds\RavenDB-Sta
ble-3.0\Raven.Database\Extensions\CommandExtensions.cs:line 27
   at Raven.Database.DocumentDatabase.ProcessBatch(IList`1 commands, Cancellatio
nToken token) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\DocumentDatabase.cs
:line 1214
   at Raven.Database.DocumentDatabase.<>c__DisplayClass59.<BatchWithRetriesOnCon
currencyErrorsAndNoTransactionMerging>b__56(IStorageActionsAccessor _) in c:\Bui
lds\RavenDB-Stable-3.0\Raven.Database\DocumentDatabase.cs:line 1117
   at Raven.Storage.Esent.TransactionalStorage.ExecuteBatch(Action`1 action, Ese
ntTransactionContext transactionContext) in c:\Builds\RavenDB-Stable-3.0\Raven.D
atabase\Storage\Esent\TransactionalStorage.cs:line 843
   at Raven.Storage.Esent.TransactionalStorage.Batch(Action`1 action) in c:\Buil
ds\RavenDB-Stable-3.0\Raven.Database\Storage\Esent\TransactionalStorage.cs:line
822
   at Raven.Database.DocumentDatabase.BatchWithRetriesOnConcurrencyErrorsAndNoTr
ansactionMerging(IList`1 commands, CancellationToken token) in c:\Builds\RavenDB
-Stable-3.0\Raven.Database\DocumentDatabase.cs:line 1118
   at Raven.Database.DocumentDatabase.Batch(IList`1 commands, CancellationToken
token) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\DocumentDatabase.cs:line 6
42
   at Raven.Database.Server.Controllers.DocumentsBatchController.<BulkPost>d__8.
MoveNext() in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Server\Controllers\Doc
umentsBatchController.cs:line 83
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNot
ification(Task task)
   at System.Threading.Tasks.TaskHelpersExtensions.<CastToObject>d__3`1.MoveNext
()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNot
ification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncC
ore>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNot
ification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext
()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNot
ification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__0.MoveN
ext()

解决方案:清除工作目录(删除旧库)

您有来自多个版本的混合DLL谢谢,这是解决方案!
_dbStore = new EmbeddableDocumentStore
        {
            DefaultDatabase = defaultDbName,
            RunInMemory = false,
            UseEmbeddedHttpServer = true,
            //Configuration = new RavenConfiguration // 3690
            //{
            //    DataDirectory = "Data/System",
            //    DefaultStorageTypeName = "esent",
            //    RunInMemory = false
            //},
            Conventions = new DocumentConvention()
            {
                CustomizeJsonSerializer = serializer => serializer.TypeNameHandling = TypeNameHandling.All
            }
        };
        /* 3800 */
        _dbStore.Configuration.DataDirectory = "Data/System";
        _dbStore.Configuration.DefaultStorageTypeName = "esent";
        _dbStore.Configuration.RunInMemory = false;

        NonAdminHttp.EnsureCanListenToWhenInNonAdminContext(8080);
        _dbStore.Initialize();