[英]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.