从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);
直接从事件处理程序将数据输入数据库),这个问题才开始发生。我尝试了几种不同的方法,但都没有效果。看了我的代码之后,有什么特别的吗?
在发送到服务的请求中,属性DivisionTitle
以小写字母发送(因为您使用JsonProperty
属性定义了它):
{"divisionTitle":"the actual title"}
在您的脚本上,您试图访问属性item.DivisionTitle
(不存在,JavaScript区分大小写),然后访问此未定义值的属性(length
)。这将在脚本中导致错误。如果您更改脚本以使用实际的JSON名称(item.divisionTitle.length > 15
)或更改客户端的JsonProperty
声明以发送首字母大写的属性,则应该可以工作。
顺便说一下,如果您转到门户中的"logs"选项卡,您应该看到一些错误,这解释了为什么您得到内部服务器错误。