簡體   English   中英

Object 引用未設置為 object 的實例。 在 datagridview 實體框架中使用 LinQ 添加兩個表

[英]Object reference not set to an instance of an object. Adding Two Table using LinQ in datagridview Entity Framework

這是我的 model class:

class LedgerDetailMaster
{
    public COA_LedgerDetails COA_LedgerDetails { get; set; }
    public COA_LedgerMaster cOA_LedgerMasterr { get; set; }

    public Int64 Ledger_ID { get; set; }
    public double Debit { get; set; }
    public double Credit { get; set; }
    public string Narration { get; set; }
    public string VNO { get; set; }
    public Int64 Ledgerr_ID { get; set; }
    public DateTime VDate { get; set; }
    public string VType { get; set; }
}

我使用的代碼是

var viewModels = db.COA_LedgerDetails.ToList();

var data = viewModels.Select(a => new LedgerDetailMaster
                   {
                    Ledger_ID = a.Ledger_ID,
                    Debit = a.debit,
                    Credit = a.cedit,
                    Narration = a.narration,
                    Ledgerr_ID = a.Ledger_ID,
                    VNO = a.cOA_LedgerMaster.VNO,
                    VDate = a.cOA_LedgerMaster.VDate,
                    VType = a.cOA_LedgerMaster.VType
                   }).ToList();

dataGridView1.DataSource = data;

我得到這個例外:

Object 引用未設置為 object 的實例

DTMSolERP.COA_LedgerDetails.cOA_LedgerMaster.get返回 null。

您的 cOA_LedgerMaster 是 null 因為您沒有將其包含在查詢中。

var data = db.COA_LedgerDetails
  .Include(a => a.cOA_LedgerMaster)
  .Select(a => new LedgerDetailMaster
  {
     Ledger_ID = a.Ledger_ID,
     Debit = a.debit,
     Credit = a.cedit,
     Narration = a.narration,
     Ledgerr_ID = a.Ledger_ID,
     VNO = a.cOA_LedgerMaster.VNO,
     VDate = a.cOA_LedgerMaster.VDate,
     VType = a.cOA_LedgerMaster.VType
  }).ToList();

確保您的 viewModel 實體有一個名為 cOA_LedgerMaster 的屬性和一個與之關聯的外鍵(可能是 cOA_LedgerMasterId)

class LedgerDetailMaster
{
    public COA_LedgerMaster cOA_LedgerMasterr { get; set; }
    public int coA_LEdgerMasterrId {get; set; }
    ... // rest of your code
}

編輯:您需要在第一個查詢中包含該屬性

var viewModels = db.COA_LedgerDetails
  .Include(x => x.cOA_LedgerMaster)
  .ToList();

無論如何,您可以在此查詢中放棄並首先直接申請。

model class 中存在一些問題。 導航屬性需要是虛擬的,並且關系應該在兩個表中。 請按照以下說明操作: https://docs.microsoft.com/en-us/ef/ef6/fundamentals/relationships

暫無
暫無

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

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