如何使用C#LINQ正确地(深度)映射复杂对象

本文关键字:映射 复杂 对象 深度 何使用 C#LINQ 正确地 | 更新日期: 2023-09-27 18:21:48

我有一个数据库,其中包含一对多关系的车主表和车辆表。我想获得所有车辆的详细信息,并将每位车主映射到每辆车,但我必须将查询映射到BDO。不确定LINQ语法,但我有下面的代码。

using (var databaseContext = new DBConnection()) {
   var vehicles = (from Vehicle in databaseContext.Vehicles
                         select Vehicle);
   return vehicles.Select(x => new VehicleBDO() {
      Id = x.Id,
      // ... more simple data types
      Owner = new OwnerBDO(
         x.Owner.Id,
         x.Owner.Name)
   }).ToList();
}

如图所示,创建一个新的所有者BDO会给我一个MethodNotSupportedException,其中包含详细信息:

LINQ中只支持无参数构造函数和初始化器至实体

我已经习惯了Java和LINQ,所以不知道如何正确地完成它,任何帮助都将不胜感激。

如何使用C#LINQ正确地(深度)映射复杂对象

它想让你做这样的事情:

Owner = new OwnerBDO() { Id = x.Owner.Id, name = x.Owner.Name},

(我不知道OwnerBDO的属性名称,所以我猜到了。)