簡體   English   中英

將外鍵值包含到單個記錄的 DTO 中

[英]Including foreign key values into a DTO for a single record

我已經有一段時間沒有這樣做了,但我知道有一種簡單的方法可以做到這一點,但我已經忘記了。 下面我有一個 class 設計用於填充數據 object 的單個記錄。 但是我無法使用 lambda 語句從另一個表(與外鍵相關)中獲取值來填充,因為我遺漏了一些東西(從下面的另一個表中提取的兩個值可以看作 dto.LeaseName 和 dto.CarName)。 我應該如何為 object dm 編寫 lambda?

    public StationUnloadingLogDTO GetSingleRecordforLog(int Id)
    {
        StationUnloadingLogDTO dto = new StationUnloadingLogDTO();
        StationUnloadingLog dm = new StationUnloadingLog();

        dm = entity.StationUnloadingLog
                .Where(x => x.Id == Id)
                .FirstOrDefault();

        dto.Id = dm.Id;
        dto.DateLogged = dm.DateLogged;
        dto.DriverName = dm.DriverName;
        dto.TruckNumber = dm.TruckNumber;
        dto.CarName = dm.Carrier.CarName;
        dto.CarrierId = dm.CarrierId;
        dto.SpecificGravity = dm.SpecificGravity;
        dto.LactMeterOpen = dm.LactMeterOpen;
        dto.LactMeterClose = dm.LactMeterClose;
        dto.EstimatedBarrels = dm.EstimatedBarrels;
        dto.TicketNumber = dm.TicketNumber;
        dto.LeaseNumber = dm.LeaseNumber;
        dto.LeaseName = dm.Company.CmpName;
        dto.StationId = dm.StationId;

        return dto;
    }

下面是相關的數據類

namespace Data.Models
{
    public partial class Company
    {
        public Company()
        {
            StationUnloadingLog = new HashSet<StationUnloadingLog>();
        }

        public string CmpId { get; set; }
        public string CmpName { get; set; }
        public string CmpAddress1 { get; set; }
        public string CmpAddress2 { get; set; }
        public int? CmpCity { get; set; }
        public string CmpZip { get; set; }
        public string CmpPrimaryphone { get; set; }

        public ICollection<StationUnloadingLog> StationUnloadingLog { get; set; }
    }


    public class StationUnloadingLogDTO
    {
        public int Id { get; set; }
        public DateTime? DateLogged { get; set; }
        public string DriverName { get; set; }
        public string TruckNumber { get; set; }
        public string CarrierId { get; set; }
        public string CarName { get; set; }
        public decimal? SpecificGravity { get; set; }
        public decimal? LactMeterOpen { get; set; }
        public decimal? LactMeterClose { get; set; }
        public int? EstimatedBarrels { get; set; }
        public string TicketNumber { get; set; }
        public string LeaseName { get; set; }
        public string LeaseNumber { get; set; }
        public string StationId { get; set; }
    }

    public partial class StationUnloadingLog
    {
        public int Id { get; set; }
        public DateTime? DateLogged { get; set; }
        public string DriverName { get; set; }
        public string TruckNumber { get; set; }
        public string CarrierId { get; set; }
        public decimal? SpecificGravity { get; set; }
        public decimal? LactMeterOpen { get; set; }
        public decimal? LactMeterClose { get; set; }
        public int? EstimatedBarrels { get; set; }
        public string TicketNumber { get; set; }
        public string LeaseNumber { get; set; }
        public string StationId { get; set; }

        public Carrier Carrier { get; set; }
        public Company Company { get; set; }
        public Tractorprofile Tractorprofile { get; set; }
    }

    public partial class Carrier
    {
        public Carrier()
        {
            StationUnloadingLog = new HashSet<StationUnloadingLog>();
        }

        public string CarId { get; set; }
        public string CarName { get; set; }

        public string CarAddress1 { get; set; }
        public string CarAddress2 { get; set; }
        public int? CtyCode { get; set; }
        public string CarZip { get; set; }
        public string CarContact { get; set; }

        public ICollection<StationUnloadingLog> StationUnloadingLog { get; set; }
}

您應該使用這樣的子實體查詢您的記錄。

dm = DbSet<StationUnloadingLog>
                .Where(x => x.Id == Id).Include(x => x.Carrrier)
                .FirstOrDefault();

你是對的,包含就可以了。 我必須記住使用 Microsoft.EntityFrameworkCore 添加到頁面。 忘記我認為是什么讓我感到困惑,但現在我可以將其他表中的這些字段填充到 dto 中。 謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM