[ 
https://issues.apache.org/jira/browse/IGNITE-11658?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16853204#comment-16853204
 ] 

Pavel Tupitsyn commented on IGNITE-11658:
-----------------------------------------

[~ilyak] looks good, merged to master: f71f7776c50cb974a795437d4fb2ffcd0b399d10

Yes, transaction does not matter here I think (or am I missing something)?
The premise of EF caching is that it works only when you use EF queries.
Raw SQL queries, updating DB directly, stored procedures and other means of 
changing data can't be detected by our provider, and we can't invalidate data 
in those cases.

> Ignite EntityFramework error when stored procedures
> ---------------------------------------------------
>
>                 Key: IGNITE-11658
>                 URL: https://issues.apache.org/jira/browse/IGNITE-11658
>             Project: Ignite
>          Issue Type: Bug
>    Affects Versions: 2.7
>            Reporter: Alberto
>            Priority: Major
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> Hi, when I trying to save context in Entity Framework with a stores procedure 
> associated to Entity I get the error NullReferenceException.
> In Apache.Ingnite.EntityFramework package InvalidateCache entitySets is NULL 
> because no entities is affected. In DbCommandInfo _affectedEntitySets is NULL 
> when stored procedures is used.
> Any solution?
> Thanks
> en 
> Apache.Ignite.EntityFramework.Impl.DbTransactionInterceptor.InvalidateCache(ICollection`1
>  entitySets, DbTransaction transaction)
>  en Apache.Ignite.EntityFramework.Impl.DbCommandProxy.InvalidateCache()
>  en Apache.Ignite.EntityFramework.Impl.DbCommandProxy.ExecuteNonQuery()
>  en 
> System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<NonQuery>b__0(DbCommand
>  t, DbCommandInterceptionContext`1 c)
>  en 
> System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget
>  target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 
> executing, Action`3 executed)
>  en 
> System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand
>  command, DbCommandInterceptionContext interceptionContext)
>  en System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
>  en 
> System.Data.Entity.Core.Mapping.Update.Internal.FunctionUpdateCommand.Execute(Dictionary`2
>  identifierValues, List`1 generatedValues)
>  en System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.Update()
>  en 
> System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.<Update>b__2(UpdateTranslator
>  ut)
>  en System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.Update[T](T 
> noChangesResult, Func`2 updateFunction)
>  en System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.Update()
>  en System.Data.Entity.Core.Objects.ObjectContext.<SaveChangesToStore>b__35()
>  en 
> System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 
> func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, 
> Boolean releaseConnectionOnSuccess)
>  en 
> System.Data.Entity.Core.Objects.ObjectContext.SaveChangesToStore(SaveOptions 
> options, IDbExecutionStrategy executionStrategy, Boolean 
> startLocalTransaction)
>  en 
> System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass2a.<SaveChangesInternal>b__27()
>  en 
> System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1
>  operation)
>  en 
> System.Data.Entity.Core.Objects.ObjectContext.SaveChangesInternal(SaveOptions 
> options, Boolean executeInExistingTransaction)
>  en System.Data.Entity.Core.Objects.ObjectContext.SaveChanges(SaveOptions 
> options)
>  en System.Data.Entity.Internal.InternalContext.SaveChanges()
>  en System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
>  en System.Data.Entity.DbContext.SaveChanges()
>  en CommonLibrary.Repositorios.GenericUnitOfWork`1.Save() en 
> D:\Documentos\Desarrollo\WEB\RISHT\CommonLibrary\Repositorios\GenericUnitOfWork.cs:línea
>  85
>  en RISHT.Services.EstudioCRUDManager.CreateOrEditEstudio(Estudio estudio) en 
> D:\Documentos\Desarrollo\WEB\RISHT\RISHT.Services\EstudioCRUDManager.cs:línea 
> 274
>  en RISHT.Services.EstudioCRUDManager.Save(Estudio estudio) en 
> D:\Documentos\Desarrollo\WEB\RISHT\RISHT.Services\EstudioCRUDManager.cs:línea 
> 568
>  en RISHT.Services.EstudioCRUDManager.SaveEstudio(Estudio estudio) en 
> D:\Documentos\Desarrollo\WEB\RISHT\RISHT.Services\EstudioCRUDManager.cs:línea 
> 382
>  en RISHT.Controllers.EstudioController.AltaFromWizard(EstudioWizardViewModel 
> estudioWizardViewModel) en 
> D:\Documentos\Desarrollo\WEB\RISHT\RISHT\Controllers\EstudioController.cs:línea
>  105
>  en lambda_method(Closure , ControllerBase , Object[] )
>  en System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, 
> Object[] parameters)
>  en System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext 
> controllerContext, IDictionary`2 parameters)
>  en 
> System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext 
> controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 
> parameters)
>  en 
> System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c.<BeginInvokeSynchronousActionMethod>b__9_0(IAsyncResult
>  asyncResult, ActionInvocation innerInvokeState)
>  en 
> System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult
>  asyncResult)
>  en System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
>  en 
> System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult
>  asyncResult)
>  en 
> System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_0.<InvokeActionMethodFilterAsynchronouslyRecursive>b__0()
>  en 
> System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_2.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2()
>  en 
> System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_2.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2()
>  en 
> System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_2.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2()
>  en 
> System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass7_0.<BeginInvokeActionMethodWithFilters>b__1(IAsyncResult
>  asyncResult)
>  en 
> System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult
>  asyncResult)
>  en System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
>  en 
> System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult
>  asyncResult)
>  en 
> System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_6.<BeginInvokeAction>b__4()
>  en 
> System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_1.<BeginInvokeAction>b__1(IAsyncResult
>  asyncResult)
>  en 
> System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult
>  asyncResult)
>  en System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
>  en 
> System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult
>  asyncResult)
>  en System.Web.Mvc.Controller.<>c.<BeginExecuteCore>b__152_1(IAsyncResult 
> asyncResult, ExecuteCoreState innerState)
>  en 
> System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult
>  asyncResult)
>  en System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
>  en System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
>  en System.Web.Mvc.Controller.<>c.<BeginExecute>b__151_2(IAsyncResult 
> asyncResult, Controller controller)
>  en 
> System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult
>  asyncResult)
>  en System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
>  en System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)
>  en 
> System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult
>  asyncResult)
>  en System.Web.Mvc.MvcHandler.<>c.<BeginProcessRequest>b__20_1(IAsyncResult 
> asyncResult, ProcessRequestState innerState)
>  en 
> System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult
>  asyncResult)
>  en System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
>  en System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
>  en 
> System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult
>  result)
>  en 
> System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
>  en System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
>  en System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& 
> completedSynchronously)



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to