The problem is that you are mixing two different components.
serviceContext.CreateQuery<MyEntity>(tableName)
uses the System.Data.Services.Client namespace. In this model, the entity itself does not track etag; the context does this for you.
MyCloudTableClient.GetTableReference(tableName).Execute(replaceOperation)
Uses the Table.DataServices namespace. There is no central context in this model, and each object tracks its own state by exposing the Etag property. This is provided using the ITableEntity interface. The object you are using from the request is not intended to be used with newer libraries, and this is the root of the problem.
Switch to
MyCloudTableClient.GetTableReference(tableName).CreateQuery<MyEntity>()
to create your request, and your problems should disappear.
source share