如何在一个变量中存储多行? C# Entity Framework
How to store multiple rows in one variable? C# Entity Framework
public static List<TruckWithModel> GetAllTrucks()
{
using (DAD_BaldipContext ctx = new DAD_BaldipContext())
{
var x = ctx.TruckFeatureAssociation
.Include(t => t.Truck)
.Include(tf => tf.Feature)
.Include(tm => tm.Truck.TruckModel)
.Select(it => new TruckWithModel()
{
Colour = it.Truck.Colour,
Size = it.Truck.TruckModel.Size,
RentalPrice = it.Truck.DailyRentalPrice,
Status = it.Truck.Status,
Model = it.Truck.TruckModel.Model,
Rego = it.Truck.RegistrationNumber,
Features = it.Feature.Description
}) ;
return (List<TruckWithModel>)x.ToList();
}
}
此代码从相关 tables TruckFeatureAssociation
、TruckFeature
、IndividualTruck
和 TruckModel
.
中检索各种属性值
我遇到的麻烦是 TruckFeatureAssociation
有最多 5 个条目用于同一辆卡车,这个 table 是 IndividualTruck
和 table 之间的交叉点TruckFeature
其中 TruckFeature
是 table 的各种特征。
为每个 TruckFeatureAssociation
创建一个不同的 TruckWithModel
对象,即如果有 3 个关联的特征,每辆卡车在我调用此函数的数据网格中显示三行。
我想要它,以便所有功能都可以存储在一个对象中。
所以在上面的输出中,我只想要一行,说报警系统,chrome 轮子。
这里的问题是您正在查询特征,但模型反映了一辆卡车...查询一辆卡车,获取它的特征,然后让您的视图模型 (TruckWithModel) 帮助格式化该视图的数据。
例如:
[Serializable]
public class TruckWithModel
{
public string Colour { get; set; }
public string Size { get; set; }
public decimal RentalPrice { get; set; }
public string Status { get; set; }
public string Model { get; set; }
public List<string> Features { get; set; } = new List<string>();
public string FormattedFeatures
{
get { return string.Join(", ", Features); }
}
}
现在查询数据时:
var trucks = ctx.Trucks
.Select(t => new TruckWithModel()
{
Colour = t.Colour,
Size = t.TruckModel.Size,
RentalPrice = t.DailyRentalPrice,
Status = t.Status,
Model = t.TruckModel.Model,
Rego = t.RegistrationNumber,
Features = t.Features.Select(f => f.Description).ToList()
}).ToList();
这假设 Truck 具有 Collection 个特征,其中 TruckFeatureAssociation 只是一个映射实体。如果您的卡车 collection 基于 TruckFeatureAssociation:
Features = t.Features.Select(f => f.Feature.Description).ToList()
现在,在您要显示功能的视图中,绑定到 FormattedFeatures
属性 以获取每辆卡车的 comma-delimited 功能列表。
请注意,当您通过 .Select()
使用 Projection 时,您不需要使用 .Include()
来预先加载相关实体。 EF 可以自动计算出加载什么以满足投影。
public static List<TruckWithModel> GetAllTrucks()
{
using (DAD_BaldipContext ctx = new DAD_BaldipContext())
{
var x = ctx.TruckFeatureAssociation
.Include(t => t.Truck)
.Include(tf => tf.Feature)
.Include(tm => tm.Truck.TruckModel)
.Select(it => new TruckWithModel()
{
Colour = it.Truck.Colour,
Size = it.Truck.TruckModel.Size,
RentalPrice = it.Truck.DailyRentalPrice,
Status = it.Truck.Status,
Model = it.Truck.TruckModel.Model,
Rego = it.Truck.RegistrationNumber,
Features = it.Feature.Description
}) ;
return (List<TruckWithModel>)x.ToList();
}
}
此代码从相关 tables TruckFeatureAssociation
、TruckFeature
、IndividualTruck
和 TruckModel
.
我遇到的麻烦是 TruckFeatureAssociation
有最多 5 个条目用于同一辆卡车,这个 table 是 IndividualTruck
和 table 之间的交叉点TruckFeature
其中 TruckFeature
是 table 的各种特征。
为每个 TruckFeatureAssociation
创建一个不同的 TruckWithModel
对象,即如果有 3 个关联的特征,每辆卡车在我调用此函数的数据网格中显示三行。
我想要它,以便所有功能都可以存储在一个对象中。
所以在上面的输出中,我只想要一行,说报警系统,chrome 轮子。
这里的问题是您正在查询特征,但模型反映了一辆卡车...查询一辆卡车,获取它的特征,然后让您的视图模型 (TruckWithModel) 帮助格式化该视图的数据。
例如:
[Serializable]
public class TruckWithModel
{
public string Colour { get; set; }
public string Size { get; set; }
public decimal RentalPrice { get; set; }
public string Status { get; set; }
public string Model { get; set; }
public List<string> Features { get; set; } = new List<string>();
public string FormattedFeatures
{
get { return string.Join(", ", Features); }
}
}
现在查询数据时:
var trucks = ctx.Trucks
.Select(t => new TruckWithModel()
{
Colour = t.Colour,
Size = t.TruckModel.Size,
RentalPrice = t.DailyRentalPrice,
Status = t.Status,
Model = t.TruckModel.Model,
Rego = t.RegistrationNumber,
Features = t.Features.Select(f => f.Description).ToList()
}).ToList();
这假设 Truck 具有 Collection 个特征,其中 TruckFeatureAssociation 只是一个映射实体。如果您的卡车 collection 基于 TruckFeatureAssociation:
Features = t.Features.Select(f => f.Feature.Description).ToList()
现在,在您要显示功能的视图中,绑定到 FormattedFeatures
属性 以获取每辆卡车的 comma-delimited 功能列表。
请注意,当您通过 .Select()
使用 Projection 时,您不需要使用 .Include()
来预先加载相关实体。 EF 可以自动计算出加载什么以满足投影。