从Windows Store应用程序插入Azure数据库时遇到麻烦

本文关键字:数据库 遇到 麻烦 Azure 插入 Windows Store 应用程序 | 更新日期: 2023-09-27 18:18:59

我目前正在开发一个Windows Store应用程序(用于学校作业),并且我在将数据插入存储在Azure中的数据库时遇到了麻烦。每当我尝试将数据插入数据库时,就会抛出MobileServiceInvalidOperationException。我的代码如下:

在我的模型类

class Division
{
    public string Id {get; set;}
    [JsonProperty(PropertyName = "divisionTitle")]
    public string DivisionTitle {get; set;}
}

和相关代码在我的mainpage . example .cs文件

private MobileServiceCollection<Division, Division> divisionItems;
private IMobileServiceTable<Division> divisionTable = App.MobileService.GetTable<Division>();
private async void InsertDivision(Division divisionItem)
{
    // This code inserts a new division Item into the database.
    // When the operation completes and Mobile Services has
    // assigned an Id, the item is added to the collection
    try
    {
        await divisionTable.InsertAsync(divisionItem);
        divisionItems.Add(divisionItem);
    }
    /////////////////////////////////////////////////////////  
    // The MessageDialog that pops up when this exception  //
    // gets thrown is:                                     //
    //                                                     //
    //        Internal Server Error (HTTP 500)             //
    ////////////////////////////////////////////////////////
    catch (MobileServiceInvalidOperationException e)
    {
        MessageDialog errormsg = new MessageDialog(e.Message,
            string.Format("{0} (HTTP {1})",
            e.Response.ReasonPhrase,
            (int)e.Response.StatusCode));
        var ignoreAsyncOpResult = errormsg.ShowAsync();
    }
}
private void DivisionButtonSave_Click(object sender, RoutedEventArgs e)
{
    var DivisionItem = new Division
    {
        DivisionTitle = DivisionInput.Text
    };
    InsertDivision(DivisionItem);
}
我还在管理门户中添加了一个脚本:
function insert(item, user, request) {
    if (item.DivisionTitle.length > 15) {
        request.respond(statusCodes.BAD_REQUEST, 'Division title must be under 15 characters');
    }
    else {
        request.execute();
    }
}

在进行上述更改之前,我在应用程序中与Azure通信没有任何问题,插入数据也没有任何问题。只有在Azure中编辑脚本之后(默认的插入方法只是request.execute()语句),并且由于我添加了InsertDivision方法(我之前使用命令await App.MobileService.GetTable<Division>().InsertAsync(DivisionItem);直接从事件处理程序将数据输入数据库),这个问题才开始发生。我尝试了几种不同的方法,但都没有效果。看了我的代码之后,有什么特别的吗?

从Windows Store应用程序插入Azure数据库时遇到麻烦

在发送到服务的请求中,属性DivisionTitle以小写字母发送(因为您使用JsonProperty属性定义了它):

{"divisionTitle":"the actual title"}

在您的脚本上,您试图访问属性item.DivisionTitle(不存在,JavaScript区分大小写),然后访问此未定义值的属性(length)。这将在脚本中导致错误。如果您更改脚本以使用实际的JSON名称(item.divisionTitle.length > 15)或更改客户端的JsonProperty声明以发送首字母大写的属性,则应该可以工作。

顺便说一下,如果您转到门户中的"logs"选项卡,您应该看到一些错误,这解释了为什么您得到内部服务器错误。