[英]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();
}
我擔心要添加新的驅動程序。 使用這種方式是否正確? 提前感謝您的建議和幫助。
您必須明確添加新Driver
並Include
任務集合:
[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.