GeralexGR
GeralexGR

Reputation: 3592

Easy tables with Xamarin Forms - InvalidOperationException

I am using this tutorial in order to connect a xamarin.forms app with easy tables. I cannot add data to the database in Azure as i get

System.InvalidOperationException

The error message is the following

An insert operation on the item is already in the queue.

The exception happends in the following line of code.

await usersTable.InsertAsync(data);

In order to add a user

var user = new User {  Username = "username", Password = "password" };
bool x = await AddUser(user);

AddUser

public async Task<bool> AddUser(User user)
        {
            try
            {
                await usersTable.InsertAsync(user);
                await SyncUsers();
                return true;
            }
            catch (Exception x)
            {
                await new MessageDialog(x.Message.ToString()).ShowAsync();
                return false;
            }
        }

SyncUsers()

public async Task SyncUsers()
        {
            await usersTable.PullAsync("users", usersTable.CreateQuery());
            await client.SyncContext.PushAsync();
        }

where

IMobileServiceSyncTable<User> usersTable;
 MobileServiceClient client = new MobileServiceClient("url");

Initialize

var path = Path.Combine(MobileServiceClient.DefaultDatabasePath, "DBNAME.db");
var store = new MobileServiceSQLiteStore(path);
store.DefineTable<User>();
await client.SyncContext.InitializeAsync(store, new MobileServiceSyncHandler());
usersTable = client.GetSyncTable<User>();

Upvotes: 1

Views: 811

Answers (2)

Adrian Hall
Adrian Hall

Reputation: 8035

Some debugging you can do:

1) Turn on diagnostic logging in the backend and debug the backend: https://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/chapter8/developing/#debugging-your-cloud-mobile-backend 2) Add a logging delegating handler in your MobileServiceClient setup: https://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/chapter3/server/#turning-on-diagnostic-logs

The MobileServicePushFailedException contains an inner exception that contains the actual error. Normally, it is one of the 409/412 HTTP errors, which indicates a conflict. However, it can also be a 404 (which means there is a mismatch between what your client is asking for and the table name in Easy Tables) or 500 (which means the server crashed, in which case the server-side diagnostic logs indicate why).

Easy Tables is just a Node.js service underneath the covers.

Upvotes: 0

mindOfAi
mindOfAi

Reputation: 4632

Please check your table. You probably have added the item already. Also, I would suggest that you don't set the Id property for your entity, because you might be inserting a same ID that's already existing in your table. It's probably the reason why the exception is appearing.

Hope it helps!

Upvotes: 2

Related Questions