LINQ / WCF"序列不包含任何元素" &安培; "值不能为空"

时间:2015-08-12 02:03:56

标签: c# linq wcf wcf-data-services

由于以下情况,我的4个CRUD服务中有3个*失败了。 我正在使用C#与linq和WCF数据服务。 我有以下操作合同:

    [OperationContract]
    void DeleteRecord(int vehicleIDDel);

    [OperationContract]
    VehicleStockItem SearchVehicleRecord(int vehicleID);

    [OperationContract]
    void UpdateVehicleDetails(int vehicleIDUpd);

究竟发生了什么:我正在尝试通过控制台应用程序执行基本的crud过程。更新&删除服务同时工作但停止程序运行。我的意思是,他们将更新和删除传递给他们的任何ID但是都阻止程序运行,因为查询似乎传回一个空序列,或者如果使用FirstOrDefault传回一个不是null的null元素允许根据调试器。

这两项服务的代码如下:

    public void DeleteRecord(int vehicleIDDel)
    {

        VehicleStockItem vehicle =
         (from v in db.VehicleStockItems
          where v.VehicleStockItemID == vehicleIDDel
          select v)
          .FirstOrDefault();

        db.VehicleStockItems.Remove(vehicle);
        db.SaveChanges();

    }
    public void UpdateVehicleDetails(int vehicleIDUpd)
    {
        VehicleStockItem vehicle =
            (from v in db.VehicleStockItems
             where v.VehicleStockItemID == vehicleIDUpd
             select v).FirstOrDefault();



        vehicle.Sold = true;
        db.SaveChanges();
    }

正如我所说,这两个实际上都改变了他们应该记录的记录,但都抛出错误并阻止程序运行。

更新错误: http://s23.postimg.org/cgvzax0nf/update_Error.jpg

删除错误: http://s28.postimg.org/dbdkb6m59/delete_Error.jpg

接下来是检索服务。

这根本不起作用,即使我将值直接放入WCF测试客户端也不行。

我为此服务提供的代码如下:

     public VehicleStockItem SearchVehicleRecord(int vehicleID)
    {

        VehicleStockItem vehicle =
            (from v in db.VehicleStockItems
             where v.VehicleStockItemID == vehicleID
             select v
             ).FirstOrDefault();
        return vehicle;
    }

当我在存在的记录上运行它时,会出现以下错误: http://s28.postimg.org/i67o5aowt/error_WCF.jpg

有人可以解释我哪里出错了,以及为什么我会收到这些错误。请在您的答案中提供示例,因为我非常熟悉这种语言并使用WCF数据服务。

如果您需要更多信息,请询问。

编辑:

这是提交删除的内容:

         Console.Write("Enter ID of Vehicle to delete: ");
         int vehicleIDDel = int.Parse(Console.ReadLine());
         vehicleRef.DeleteRecord(vehicleIDDel);

1 个答案:

答案 0 :(得分:0)

这两个截图,一个用于更新,一个用于删除,因为当您在查询中说FirstOrDefault()以拉回车辆时:

VehicleStockItem vehicle =
            (from v in db.VehicleStockItems
             where v.VehicleStockItemID == vehicleID
             select v
             ).FirstOrDefault();

此处vehicle为null,因此当您调用其上的属性时,它为null并抛出此异常。研究的问题是为什么vehicleID不匹配......

相关问题