【发布时间】:2019-01-29 13:57:06
【问题描述】:
我有三个表 Car Makes、Car Model 和 CarsandModel。我有 Carsand 模型表,因为一个模型可以由多个制造商构建。我想返回包含汽车型号列表的汽车制造商列表。我现在的 longic 没有过滤汽车型号的汽车制造商列表。
我尝试添加 where 语句,但仍然没有得到正确的返回
public class CarMake
{
public int CarMakeId { get; set; }
public string CarMakeName { get; set; }
public List<CarModel> CarModel { get; set; }
}
public class CarModel
{
public int CarModelId { get; set; }
public string CarModelName { get; set; }
}
public class CarsandModel
{
public int CarMakeId { get; set; }
public int CarModelId { get; set; }
}
var CarModel = (from cmake in db.CarModel
select new CarModel
{
CarModelId = cmake.CarMakeId,
CarModelName = cmake.CarMakeName,
CarMake= (from cmake in db.Carmake
join cam in db.CarsandModel on cmake.CarMakeId equals cam.CarMakeId
where (camodel.CarMakeId == cmake.CarMakeId)
select new Asset
{
CarMakeId = cmodel.CarMakeId,
CarMakeName = cmodel.CarMakeName
}).ToList()
}
).ToList();
【问题讨论】:
-
如果是 Linq-To-Entities,您应该使用导航属性而不是嵌套查询。
-
如何使用导航属性?
-
A
CarMake相当于品牌权(丰田、本田、福特等)和CarModel模型(塔科马、思域、福克斯等)对吗?在这种情况下,这种关系应该是一对多的,因为一个品牌可以有多个模型,但一个模型只能由 1 个“品牌”制作。 -
@Jefferson:通过指定表之间的外键关系。 docs.microsoft.com/en-us/ef/ef6/fundamentals/relationships
-
我使用的模型有三个表映射表 CarsandModel 有两个键?
标签: c# entity-framework linq entity-framework-6