簡體   English   中英

關聯實體在LINQPad中有效,但在運行時為null

[英]Association entity is valid in LINQPad but null at runtime

假設我有一些與汽車相關的實體。 Vehicle類和VehicleType類。

public class Vehicle
{
    public int Id {get; set;}
    public string Name {get; set}
    public int VehicleTypeId {get; set;}
    public virtual VehicleType VehicleType {get; set;}
}

public class VehicleType
{
    public int Id {get; set;}
    public string VehicleTypeName {get; set}
    public ICollection<Vehicle> Vehicles {get; set;}
    public ICollection<Price> Prices {get; set;}
}

public class Price
{
    public int Id {get; set;}
    public int Price {get; set;}
    public int VehicleTypeId {get; set;}
    public virtual VehicleType VehicleType {get; set;}
}

VehicleType表用作Vehicle表和Price表的關系表。 我正在嘗試使用LINQ根據其VehicleType獲取給定VehiclePrice ...

var myVehicle = dbContext.Vehicles.FirstOrDefault(v => v.Id == 1234);
var myVehiclePrice = myVehicle.VehicleType.Prices.Select(p => p.Price);

現在,當使用LINQPad時,當我將數據庫用作源時,此查詢效果很好。 我得到了預期的價格。 但是,在Visual Studio中使用此方法時,將引發異常。

var myVehiclePrice = myVehicle.VehicleType.Prices.Select(p => p.Price);

唯一的例外是VehicleType為null。 我知道那里有數據,我只是不確定為什么VehicleType顯示為null

是的,我在web.config和LINQPad中使用了相同的連接字符串。

編輯:我應該注意,當使用LINQPad時,我使用的是C#表達式而不是C#語句。

解決方案 :我能夠使其正常運行。 最后,為了獲得價格,我必須在Include語句中同時包含VehicleTypePrice實體。

var myVehcilePrice = myVehicle.Include("VehicleType.Prices").Single(v => v.Id == 1234).VehicleType.Prices

請注意,您要在Include語句中包括關聯名稱。 感謝TheGeekYouNeed對Include的幫助。

var myVehicle = dbContext.Vehicles.Where(v => v.Id == 1234).Include("VehicleType").FirstOrDefault();

暫無
暫無

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

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