Azure MobileService Null参考异常

时间:2015-02-24 14:24:23

标签: c# azure windows-phone-8.1 azure-mobile-services

我目前正在使用Azure开发适用于Windows Phone 8.1的应用。 (根据我的经验,我不会真的向你推荐这个)。无论如何......我有多个控制器类,它们真的做同样的事情(检查我的数据库中是否存在某些内容,如果没有,则创建它)。我必须遇到的问题是Read()函数,它检查数据库是否已经存在一个条目:

public async void Read(Device device)
{
    IMobileServiceTable mobileServiceTable = Connect();
    MobileServiceCollection<Device, Device> devices = null;
    try
    {
        devices = await mobileServiceTable.MobileServiceClient.GetTable<Device>().Where(d => d.Manufacturer == device.Manufacturer && d.Model == device.Model).ToCollectionAsync();
    }
    catch (Exception e)
    {
        if (_onDeviceControllerListener != null)
        {
            _onDeviceControllerListener.OnError(ControllerError.Error.ReadFromDatabase, e.ToString());
        }
            return;
        }

    if (_onDeviceControllerListener != null && devices != null)
    {
        _onDeviceControllerListener.OnRead(devices);
    }
}

这个应用程序完全如何应用,但是基本上只是一个副本的oder抛出了一行NullReferenceException&#34; apps = await mobileServiceTab ...&#34;:

public async void Read(Model.App app) 
{
    IMobileServiceTable mobileServiceTable = Connect();
    MobileServiceCollection<Model.App, Model.App> apps = null;
    try {
        apps = await mobileServiceTable.MobileServiceClient.GetTable<Model.App>().Where(a => a.HardwareId == app.HardwareId && a.PackageId == app.PackageId).ToCollectionAsync();
    }
    catch (Exception e)
    {
        if (_onAppControllerListener != null)
        {
            _onAppControllerListener.OnError(ControllerError.Error.ReadFromDatabase, e.ToString());
        }
        return;
    }

    if (_onAppControllerListener != null)
    {
        _onAppControllerListener.OnRead(apps);
    }
}

有人知道问题是什么吗? 谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

您可以添加try ... catch块并检查“MobileServiceInvalidOperationException”异常。另请查看callstack以了解正在发生的事情。

如果您成功拨打移动服务以检索数据,小提琴跟踪也会通知您。然后,您可以确定问题是否在于如何处理代码中的数据。

再看一下您的MobileServiceContext类,并确保考虑所有属性,尤其是使用“Model.App”类的属性。 E.g

public virtual DbSet<Model.App> SomeProperty { get; set; }

希望这会有所帮助。