我在 ASP.NET CORE api 中使用 EF Core 和 Auto Mapper,但我有点难以理解为什么当我通过 ID 获取数据时没有获取所有数据。
当我调试并查看数据时,它都在变量中,但是当它到达自动映射器部分时,就像一些数据被忽略了。
如何获取具有相应 ID 的所有数据。
这是我的 GetAsset by Id 方法。
[HttpGet("{key:int}", Name = "getAsset")]
[EnableQuery]
public async Task<ActionResult<AssetDto>> GetAsset(int key)
{
var asset = await _context.Assets.Include(c => c.Category)
.Include(m => m.Manufacturer)
.Include(c => c.Condition)
.Include(l => l.Location)
.Include(f => f.AssetFiles)
.FirstOrDefaultAsync(i => i.Id == key);
if (asset == null) return NotFound();
var assetDto = _mapper.Map<AssetDto>(asset);
return assetDto;
}
这是我使用自动映射器的映射
CreateMap<Asset, AssetDto>().ReverseMap();
这是我的 AssetDTO
public class AssetDto
{ // Get and sets the Id property
public int Id { get; set; }
// Gets and sets the Name Property and sets it to required
[Required]
public string Name { get; set; }
// Gets and sets the CategoryId property
public int CategoryId { get; set; }
// Gets and sets the CategoryName property set it to NotMapped
[NotMapped]
public string CategoryName { get; set; }
// Gets and sets the ManufacturerId property
public int ManufacturerId { get; set; }
// Gets and sets the ManufacturerName property set it to NotMapped
[NotMapped]
public string ManufacturerName { get; set; }
//Gets and sets the Model property
public string Model { get; set; }
//Gets and sets the SerialNumber property
public string SerialNumber { get; set; }
// Gets and sets the PurchasePlace property
public string PurchasePlace { get; set; }
// Gets and sets the Quantity property
public int Quantity { get; set; }
// Gets and sets the AcquiredDate property
public DateTime AcquiredDate { get; set; }
// Gets and sets the PurchasePrice property/
public float PurchasePrice { get; set; }
// Gets and sets the CurrentValue property
public float CurrentValue { get; set; }
//Gets and sets the ConditionId property
public int ConditionId { get; set; }
// Gets and sets the ConditionName property set it to NotMapped/
[NotMapped]
public string ConditionName { get; set; }
// Gets and sets the LocationId property
public int LocationId { get; set; }
// Gets and sets the LocationName property set it to NotMapped
[NotMapped]
public string LocationName { get; set; }
// Gets and sets the RetiredDate property
public DateTime RetiredDate { get; set; }
// Gets and sets the Description property
public string Description { get; set; }
// Gets and sets the Files property set it to NotMapped
[NotMapped]
public ICollection<AssetFileDto> Files { get; set; } <-- updated
}
和我的资产模型
public class Asset
{ // Int property that gets/sets id
public int Id { get; set; }
// String property that gets/sets Name
[Required]
public string Name { get; set; }
//Foreign Key
//Int property that gets/sets category id
public int? CategoryId { get; set; }
// Foreign Key
// Int property that gets/sets Manufacturer id
public int? ManufacturerId { get; set; }
// String property that gets/sets model
public string Model { get; set; }
// String property that gets/sets serial number
public string SerialNumber { get; set; }
// String property that gets/sets purchase place
public string PurchasePlace { get; set; }
//Int property that gets/sets quantity
public int? Quantity { get; set; }
// Datetime property that gets/sets acquired date
public DateTime AcquiredDate { get; set; }
// Float property that gets/sets purchase price
public float? PurchasePrice { get; set; }
//Float property that gets/sets current value
public float? CurrentValue { get; set; }
// Foreign Key
// Int property that gets/sets condition id
public int? ConditionId { get; set; }
// Foreign Key
// Int property that gets/sets location id
public int? LocationId { get; set; }
// Datetime property that gets/sets retired date
public DateTime RetiredDate { get; set; }
//String property that gets/sets description
public string Description { get; set; }
// Foreign Key
// Collection of asset files
public ICollection<AssetFile> AssetFiles { get; set; }
// Navigation Property
public Category Category { get; set; }
// Navigation Property
public Manufacturer Manufacturer { get; set; }
// Navigation Property
public Condition Condition { get; set; }
//Navigation Property
public Location Location { get; set; }
}
我缺少的数据是 CategoryName、ManufacturerName、ConditionName LocationName 以及连接到资产的所有资产文件
当我在邮递员中执行正常的获取请求时,我得到所有数据都没有问题。但是当通过 ID 获取时,上面的字段丢失了,我不知道为什么
任何指导将不胜感激
更新:
资产文件 DTO
public class AssetFileDto
{
// Int property that gets/sets the id
public int Id { get; set; }
// Byte property that gets/sets the files
public byte[] Files { get; set; }
// String property that gets/sets the name
public string Name { get; set; }
// String property that gets/sets the mime type
public string MimeType { get; set; }
}
资产文件.cs
public class AssetFile
{
// Int property that gets/sets the id
public int? Id { get; set; }
// Byte property that gets/sets the File
public byte[] File { get; set; }
// String property that gets/sets Name
public string Name { get; set; }
// String property that gets/sets the mime type
public string MimeType { get; set; }
//Int property that gets/sets the asset id
public int AssetId { get; set; }
// Asset navigation property
public Asset Asset { get; set; }
}