在Azure移动表中创建新条目

时间:2016-06-14 10:38:16

标签: xamarin client-side azure-mobile-services

美好的一天

我认为我目前在客户端使用insert命令遇到了一个奇怪的问题。我可以轻松地在我的其他模型(表格)中创建新条目,但在我的模型中,每次单击创建帐户时,我都会收到错误的请求消息。

后端型号:

public class Person : EntityData
{
    [StringLength(20)]
    public string Name { get; set; }
    [StringLength(20)]
    public string Surname { get; set; }
    [StringLength(150)]
    public string Email { get; set; }
    [StringLength(15)]
    public string Mobile { get; set; }
    [StringLength(15)]
    public string Work { get; set; }
    [StringLength(14)]
    public string Password { get; set; }
    [StringLength(80)]
    public string Company { get; set; }

    public virtual City City { get; set; }
}

客户端控制器:

namespace azuremobile
{
    public partial class PersonManager
    {
        static PersonManager defaultInstance = new PersonManager();
        MobileServiceClient client;//Initialize Mobile SDK

        IMobileServiceTable<Person> accountTable;

        private PersonManager()
        {
            var handler = new AuthHandler();
            //Create our client and pass in Authentication handler
            this.client = new MobileServiceClient(
                Constants.ApplicationURL, handler);

            this.accountTable = client.GetTable<Person>();

        }

        public static PersonManager DefaultManager
        {
            get
            {
                return defaultInstance;
            }
            private set
            {
                defaultInstance = value;
            }
        }

        public MobileServiceClient CurrentClient//Provides basic access to azure mobile services
        {
            get { return client; }
        }

        public bool IsOfflineEnabled
        {
            get { return accountTable is Microsoft.WindowsAzure.MobileServices.Sync.IMobileServiceSyncTable<Person>; }
        }

        public async Task<Person> GetTodoItemsAsync(Expression<Func<Person, bool>> linq)
        //public async Task<List<Person>> GetTodoItemsAsync(bool syncItems = false)
        {
            try
            {
                // return new List<Person>(await accountTable.ReadAsync());
                //List<Person> newUser = await accountTable.Where(linq).Take(1).ToListAsync();
                IEnumerable<Person> items = await accountTable
                    .Where(c => c.Name != null)
                    .Take(1)
                    .ToListAsync();
                //return newUser.First();
                //              return await accountTable;
                //                .Where(c => c.Name != null)
                //                .Take(1)
                //                .ToListAsync();
            }
            catch (MobileServiceInvalidOperationException msioe)
            {
                Debug.WriteLine(@"Invalid sync operation: {0}", msioe.Message);
            }
            catch (Exception e)
            {
                Debug.WriteLine(@"Sync error: {0}", e.Message);
            }
            return null;
        }

        public async Task SaveTaskAsync(Person item)
        {
            //          if (item.Id != null)
            //              await accountTable.InsertAsync(item);
            //          else
            await accountTable.UpdateAsync(item);

        }
        public async Task CreateTaskAsync(Person item)
        {
            try
            {
            await accountTable.InsertAsync(item);
            }
            catch (MobileServiceInvalidOperationException msioe)
            {
                Debug.WriteLine(@"INVALID {0}", msioe.Message);
            }
            catch (Exception e)
            {
                Debug.WriteLine(@"ERROR {0}", e.Message);
            }
        }
    }
}

客户端注册屏幕:

public partial class SignupScreen : ContentPage
{
    PersonManager manager;

    public SignupScreen()
    {
        InitializeComponent();

        NavigationPage.SetHasNavigationBar(this, false);

        manager = PersonManager.DefaultManager;

        LoginClicked.Clicked += async (object sender, EventArgs e) =>
        {
            var main = new LoginScreen();
            Application.Current.MainPage = main;
            Navigation.RemovePage(this);
        };
    }

    async Task CreatedNewUser(Person items)
    {
        try
        {
            await manager.CreateTaskAsync(items);
        }
        catch (MobileServiceInvalidOperationException e)
        {
            await DisplayAlert("Info", e.Message, "Ok");
        }
    }

    public async void OnSignUp(object sender, EventArgs e)
    {
        string name = this.nameEntry.Text.Trim();
        string surname = this.surnameEntry.Text.Trim();
        string email = this.emailEntry.Text.Trim();
        string company = this.companyEntry.Text.Trim();
        string work = this.workEntry.Text.Trim();
        string mobile = this.mobileEntry.Text.Trim();
        string password = this.passwordEntry.Text.Trim();


        if (string.IsNullOrEmpty(name))
        {

            await DisplayAlert("Info", "Please fill in your name.", "Ok");
            this.nameEntry.PlaceholderColor = this.nameEntry.TextColor = Color.FromHex("#00FF00");
            nameEntry.Focus();
            signUpButton.IsEnabled = true;
            return;
        }

        if (string.IsNullOrEmpty(surname))
        {
            await DisplayAlert("Info", "Please fill in your surname.", "Ok");
            this.surnameEntry.PlaceholderColor = this.surnameEntry.TextColor = Color.FromHex("#00FF00");
            surnameEntry.Focus();
            signUpButton.IsEnabled = true;
            return;
        }

        if (string.IsNullOrEmpty(email))
        {
            await DisplayAlert("Info", "Please fill in your email.", "Ok");
            this.emailEntry.PlaceholderColor = this.emailEntry.TextColor = Color.FromHex("#00FF00");
            emailEntry.Focus();
            signUpButton.IsEnabled = true;
            return;
        }

        if (string.IsNullOrEmpty(company))
        {
            await DisplayAlert("Info", "Please fill in your company name.", "Ok");
            this.companyEntry.PlaceholderColor = this.companyEntry.TextColor = Color.FromHex("#00FF00");
            companyEntry.Focus();
            signUpButton.IsEnabled = true;
            return;
        }

        if (string.IsNullOrEmpty(mobile))
        {
            await DisplayAlert("Info", "Please fill in your cellphone number.", "Ok");
            this.mobileEntry.PlaceholderColor = this.mobileEntry.TextColor = Color.FromHex("#00FF00");
            mobileEntry.Focus();
            signUpButton.IsEnabled = true;
            return;
        }

        if (string.IsNullOrEmpty(work))
        {
            await DisplayAlert("Info", "Please fill in your office number.", "Ok");
            this.workEntry.PlaceholderColor = this.workEntry.TextColor = Color.FromHex("#00FF00");
            workEntry.Focus();
            signUpButton.IsEnabled = true;
            return;
        }

        if (string.IsNullOrEmpty(password))
        {
            await DisplayAlert("Info", "Please fill in your password.", "Ok");
            this.passwordEntry.PlaceholderColor = this.passwordEntry.TextColor = Color.FromHex("#00FF00");
            passwordEntry.Focus();
            signUpButton.IsEnabled = true;
            return;
        }

        try
        {
            activityIndicator.IsRunning = true;
            validationLabel.IsVisible = true;
            signUpButton.IsEnabled = false;
            if (!string.IsNullOrEmpty(email) && !string.IsNullOrEmpty(password))
            {
                var OnAdd = new Person
                {
                    Name = name,
                    Surname = surname,
                    Email = email,
                    Mobile = mobile,
                    Work = work,
                    Company = company,
                    Password = password
                };

                await CreatedNewUser(OnAdd);
                await Navigation.PushAsync(new LoginScreen());
            }
            else
            {
                await DisplayAlert("Warning", "Could not create user account.", "Ok");
            }

        }
        catch (Exception)
        {
            await DisplayAlert("Warning", "Could not create user account, problem with internet connection or server.", "Ok");
            activityIndicator.IsRunning = false;
            validationLabel.IsVisible = false;
            signUpButton.IsEnabled = true;
        }

    }
}

}

0 个答案:

没有答案