首页 > 解决方案 > Azure SQL C# 后端查询浮点导致“内部服务器错误”

问题描述

我为你们准备了一个漂亮的集市,我只是想不通,甚至无法理解。我过去创建了一些 Azure 数据库,我相信这是我使用 .NET 后端的第二个数据库。除了浮点变量外,我似乎所有东西都正确拉/插入。

精简类客户端:

class MealItem
{
    public string ID { get; set; }
    public string Name { get; set; }
    public float Price { get; set; }
}

精简类后端:

public class MealItem : EntityData
{
    public string Name { get; set; }
    public float Price { get; set; }
}

在服务器端,Price 列(和该类的其他浮点数)设置为数据类型“float”,允许使用空值。

我正在使用同步表,因此运行此行会显示错误:

await client.GetSyncTable<MealItem>().PullAsync("All", client.GetSyncTable<MealItem>().CreateQuery(), 
CancellationToken.None);

我也试过这个:

await client.GetTable<MealItem>().ToListAsync();

当我在客户端和后端注释掉浮点变量时,一切正常。我在这个上花了很多时间,但似乎无法弄清楚。任何想法将不胜感激!谢谢!

标签: c#.netazure-sql-databaseinternal-server-errormobileserviceclient

解决方案


该错误与将数据插入表时发生的从 varchar 到 float 数据类型的转换失败有关。您必须先验证“价格”数据,然后才能将其插入表中。如果 TRY_CONVERT 返回 NULL,则您无法插入该记录,因为价格值无效。


推荐阅读