[英]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
獲取給定Vehicle
的Price
...
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語句中同時包含VehicleType
和Price
實體。
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.