There is a type mismatch between the client and the service. An error after updating azure storage

StackOverflow https://stackoverflow.com/questions/22830991

سؤال

This error brought a lot of delay to my work.
This happened when I upgraded my nuget packages, especially the Windows Azure Storage.

enter image description here

Then when I run the cloud project, it gives me this error:

Server Error in '/' Application.

There is a type mismatch between the client and the service. Type '[ProjectNamespace].Merchants.DeviceRegistration' is not an entity type, but the type in the response payload represents an entity type. Please ensure that types defined on the client match the data model of the service, or update the service reference on the client.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: There is a type mismatch between the client and the service. Type '[ProjectNamespace].Merchants.DeviceRegistration' is not an entity type, but the type in the response payload represents an entity type. Please ensure that types defined on the client match the data model of the service, or update the service reference on the client.

Source Error: 


Line 185:                    select entity;
Line 186:
Line 187:            var found = a.FirstOrDefault(); -- Throwing error here
Line 188:
Line 189:            return found != null && found.ValidEnd.GetValueOrDefault(dtnow) >= dtnow;

Source File: ---------------------    Line: 187 

Stack Trace:

[InvalidOperationException: There is a type mismatch between the client and the service. Type '[ProjectNameSpace].Merchants.DeviceRegistration' is not an entity type, but the type in the response payload represents an entity type. Please ensure that types defined on the client match the data model of the service, or update the service reference on the client.]
   System.Data.Services.Client.Materialization.EntryValueMaterializationPolicy.MaterializeResolvedEntry(MaterializerEntry entry, Boolean includeLinks) +188
   System.Data.Services.Client.Materialization.EntryValueMaterializationPolicy.Materialize(MaterializerEntry entry, Type expectedEntryType, Boolean includeLinks) +189
   System.Data.Services.Client.Materialization.ODataEntityMaterializer.DirectMaterializePlan(ODataEntityMaterializer materializer, MaterializerEntry entry, Type expectedEntryType) +61
   System.Data.Services.Client.Materialization.ODataEntityMaterializerInvoker.DirectMaterializePlan(Object materializer, Object entry, Type expectedEntryType) +144
   System.Data.Services.Client.ProjectionPlan.Run(ODataEntityMaterializer materializer, ODataEntry entry, Type expectedType) +65
   System.Data.Services.Client.Materialization.ODataEntityMaterializer.ReadImplementation() +282
   System.Data.Services.Client.Materialization.ODataMaterializer.Read() +41
   System.Data.Services.Client.MaterializeAtom.MoveNextInternal() +527
   System.Data.Services.Client.MaterializeAtom.MoveNext() +106
   System.Linq.<CastIterator>d__b1`1.MoveNext() +85
   System.Linq.Enumerable.FirstOrDefault(IEnumerable`1 source) +164
   System.Data.Services.Client.DataServiceQueryProvider.ReturnSingleton(Expression expression) +717
   System.Data.Services.Client.DataServiceQueryProvider.Execute(Expression expression) +111
   System.Linq.Queryable.FirstOrDefault(IQueryable`1 source) +251
   [ProjectName].Logic.ClientAuthentication.IsValidDevice(String devicecode, String clientkey, String merchant) in [PathOfFile]\ClientAuthentication.cs:187
   [ProjectName].Logic.ClientAuthentication.LoginDevice(String merchant, String devicecode, String clientkey) in [PathOfFile]\ClientAuthentication.cs:69
   [ProjectName].Web.Cache.Device.RefreshToken(String merchantId) in [PathOfFile]\Cache\Device.cs:49
   [ProjectName].Web.Cache.Device.get_Salt() in [PathOfFile]\Cache\Device.cs:24
   [ProjectName].Web.Merchant.Controllers.HomeController.Index() in [PathOfFile]\Controllers\HomeController.cs:16
   lambda_method(Closure , ControllerBase , Object[] ) +101
   System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +59
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +435
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +60
   System.Web.Mvc.Async.ActionInvocation.InvokeSynchronousActionMethod() +76
   System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +36
   System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +73
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +136
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +49
   System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +117
   System.Web.Mvc.Async.<>c__DisplayClass48.<InvokeActionMethodFilterAsynchronouslyRecursive>b__41() +323
   System.Web.Mvc.Async.<>c__DisplayClass48.<InvokeActionMethodFilterAsynchronouslyRecursive>b__41() +323
   System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult) +44
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +47
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +136
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +50
   System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +72
   System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +185
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +42
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +133
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +40
   System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +34
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +44
   System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +39
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +62
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
   System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +39
   System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +39
   System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +39
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +40
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9514928
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18446  

Here is the query being generated:

{https://[accountname].table.core.windows.net/MerchantApplication()?$filter=PartitionKey eq '635180925195321704_38913b36f10d47e4916671ba51e2184c' and RowKey eq 'D_f974c1da570946f183f4f4640534a343'}
    base {System.Data.Services.Client.DataServiceQuery<[ProjectNamespace].Merchants.DeviceRegistration>}: {https://[accountname].table.core.windows.net/MerchantApplication()?$filter=PartitionKey eq '635180925195321704_38913b36f10d47e4916671ba51e2184c' and RowKey eq 'D_f974c1da570946f183f4f4640534a343'}  

I am totally out of idea on finding solution for this.

Edit

Here is the later version:

enter image description here

I also notice that the later version generates this query:

{https://[accountname].table.core.windows.net/MerchantApplication()?$filter=(PartitionKey eq '635180925195321704_38913b36f10d47e4916671ba51e2184c') and (RowKey eq 'D_f974c1da570946f183f4f4640534a343')}
    base {System.Data.Services.Client.DataServiceQuery<[ProjectNameSpace].Merchants.DeviceRegistration>}: {https://[accountname].table.core.windows.net/MerchantApplication()?$filter=(PartitionKey eq '635180925195321704_38913b36f10d47e4916671ba51e2184c') and (RowKey eq 'D_f974c1da570946f183f4f4640534a343')}

Edit 2

To add more information, I also did the following:

  • Remove all nuget packages and restore them one by one
  • Updated nuget.exe as well as all nuget packages, I even updated Windows Azure Tools for Visual Studio 2012. The version is 2.2
  • I have tried all the possible solutions I found on the net related to this question.

But in the end, the problem above was not solved.
For now, I go back to the previous project files. But this project is having problem when deploying to production server (Windows Azure), but not in staging server. It is really weird.

هل كانت مفيدة؟

المحلول

See here for the answer that worked for me.

Basically, add a DataServiceKey attribute to your TableEntity derived class (Merchants.DeviceRegistration?) that includes the PartitionKey and RowKey properties.

I imagine your class declaration will need to look something like the following:

[DataServiceKey("PartitionKey", "RowKey")]
DeviceRegistration : TableEntity
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top