簡體   English   中英

如何在另一個實體中添加實體

[英]How to add entity inside another entity

我正在研究.Net Core

這是我的任務頁面。 它實際上與兩個表有關。 在此處輸入圖像描述

在舊傳統中,您必須先填寫每個表,然后再從此處選擇數據

我想要的是從這里添加新的驅動程序。

在此處輸入圖像描述

需要明確的是,我可以選擇兩個驅動程序 Vin 和 Jason 但是如果我在這里發短信並且如果我按下添加任務按鈕它也應該添加到驅動程序表和任務表

我試過了:

[HttpPost]
public async Task<ActionResult<List<Mission>>> AddMission(MissionDto request)
{
    var driver = _context.Drivers
    .include(p=>p.Missions)
    .SingleOrDefault(p => p.Name == request.name)
    ?? new Driver
    {
        Name = request.Name,
        Age = request.Age
        //...
        //...
    };

    var newMission = new Mission
    {
        TimeCreated = Convert.ToDateTime(DateTime.Now.GetDateTimeFormats()[0]),
        MissionId = request.ShipmentId,
    };

    driver.Missions.Add(newMission);
    _context.SaveChanges();
}

我擔心要添加新的驅動程序。 使用這種方式是否正確? 提前感謝您的建議和幫助。

您必須明確添加新DriverInclude任務集合:

[HttpPost]
public async Task<ActionResult<List<Mission>>> AddMission(MissionDto request)
{
    var driver = _context.Drivers
        .Include(d => d.Missions)
        .SingleOrDefault(p => p.Name == request.name);

    if (driver == null)
    {
        driver = new Driver
        {
            Name = request.Name,
            Age = request.Age
            //...
            //...
        };

        _context.Drivers.Add(driver);
    }

    var newMission = new Mission
    {
        TimeCreated = Convert.ToDateTime(DateTime.Now.GetDateTimeFormats()[0]),
        MissionId = request.ShipmentId,
    };

    driver.Missions.Add(newMission);

    _context.SaveChanges();
}

你可以這樣做:

[HttpPost]
public async Task<ActionResult<List<Mission>>> AddMission(MissionDto request, CancellationToken cancellationToken)
{
    var driver = new Driver();

    driver = await _context.Drivers
        .Include(driver => driver.Missions)
        .Where(driver => driver.Name == request.Name)
        .SingleOrDefaultAsync(cancellationToken);

    var mission = new Mission
    {
        TimeCreated = Convert.ToDateTime(DateTime.Now.GetDateTimeFormats()[0]),
        MissionId = request.ShipmentId,
    };

    if(driver is not null)
    {
         driver.Missions.Add(mission);
        _context.driver.Update(driver)
    }

    if (driver is null)
    {
        driver = new Driver
        {
            Name = request.Name,
            Age = request.Age
            //...
            //...
        };

        driver.Missions.Add(mission);
        await _context.Drivers.AddAsync(driver,cancellationToken);
    }

   
   await _context.SaveChangesAsync(cancellationToken);
}

暫無
暫無

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

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