关联实体在 LINQPad 中有效但在运行时为空
Association entity is valid in LINQPad but null at runtime
假设我有一些与汽车相关的实体。一个Vehicle
class和一个VehicleType
class.
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
table 作为与车辆 table 和价格 table 的关系 table。我正在尝试使用 LINQ 获取给定 Vehicle
的 Price
基于它的 VehicleType
...
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
为空。我知道那里有数据,我只是不确定为什么 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();
假设我有一些与汽车相关的实体。一个Vehicle
class和一个VehicleType
class.
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
table 作为与车辆 table 和价格 table 的关系 table。我正在尝试使用 LINQ 获取给定 Vehicle
的 Price
基于它的 VehicleType
...
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
为空。我知道那里有数据,我只是不确定为什么 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();