簡體   English   中英

轉換為值類型“Int32”失敗

[英]The cast to value type 'Int32' failed

我有以下代碼。 我收到錯誤:

轉換為值類型'System.Int32'失敗,因為實現的值為null。 結果類型的泛型參數或查詢必須使用可空類型。

var productItem =   from sales 
                      in db.Sales_inv_details
                  select new { 
                           sales.Sales_Invoices.Customer.Cust_Id, 
                           sales.Sales_Invoices.Customer.Customer_Name,         
                           sales.Sales_Invoices.Employe.Emp_Name, 
                           sales.Sales_Invoices.Employe.Emp_code,
                           sales.Sales_Invoices.Date_invoice, 
                           sales.Item.Item_ID, 
                           sales.Qty, 
                           sales.Qty_Price, 
                           sales.Item.Item_Name, 
                           sales.Item.Item_Code, 
                           Unit_Measure = sales.Item.TBL_Unit_Measure.Code,
                           sales.Sales_Invoices.Descrption, 
                           sales.disc };

productItem = productItem
  .Where(x => (x.Date_invoice >= model.Fromdate & x.Date_invoice <= (model.Todate)));

productItem = productItem
  .Where(x => (x.Emp_code == model.Emp_code));

聽起來您的模型將其中一個屬性定義為非可空,但數據庫將相應的列定為可為空,並且其中包含空值。 當生成的閱讀器嘗試填充模型時,BOOM。 不幸的是,我們無法告訴您哪個屬性,它甚至不需要是該代碼中提到的屬性之一,因為它可能是Sales_inv_details代表的FrobNumber屬性。

您需要非常仔細地檢查您的模型。 Sales_inv_details表示的屬性/列開始。 找到不匹配項后:將其標記為可為空,然后重試。

其中一個Entity類的屬性之一定義為intSystem.Int32 ),但在數據庫中是null值。 由於int不能為null因此會出現此錯誤。

要解決此問題,請確保數據庫查詢不返回空值,或將屬性定義更改為可以為null的整數( int?Nullable<int> )。

要在數據庫中查找相應的記錄,請嘗試在SQL Management Studio中重新創建查詢(即設置相同的“WHERE過濾器”),並檢查應包含整數值的空列的結果。

看起來錯誤的將db字段映射到模型。 可能你的模型中有int屬性,但int? 在數據庫中

沒有實體模型很難分辨,但是當查詢涉及一些left outer join ,通常會發生此異常,因此如果您沒有為右(可選)端包含null檢查,LINQ to Entities不會生成NRE,要求您在投影內將非可空值類型提升為可空。

檢查下面的一些關系: sales.Sales_Invoicessales.Sales_Invoices.Customersales.Sales_Invoices.Employesales.Itemsales.Item.TBL_Unit_Measure 如果某些右端屬性是可選的,請確保在投影中包含強制轉換為相應的可空類型,即如果您有int屬性,請在select子句中使用= (int?).. (或C#6 ?.運營商)。

PS異常消息指示Int32 ,因此專注於int列。

嘗試通過使用來處理生成的空值/現有的空值

  • (INT?)
  • (p.property == null)? 0:p.property

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM