我有这个dto模型:
public class WorkoutModel
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public bool IsDeleted { get; set; }
public int ProgramId { get; set; }
public List<ExerciseModel> Exercises { get; set; }
}
我在这个DTO中有programId,这就是我保存到db的方式:
public async Task<int> CreateAsync(WorkoutModel model, string createdBy)
{
var workout = _mapper.Map<Workout>(model);
workout.Program = await _repository.GetByIdAsync<Program>(model.ProgramId);
_repository.Create(workout, createdBy);
return await _repository.SaveAsync();
}
如何使用automapper而不是丑陋:
workout.Program = await _repository.GetByIdAsync<Program>(model.ProgramId);
并不仅仅用于使用自动播放器。
答案 0 :(得分:0)
我认为最好的方法是更改Workout
实体类。添加public int ProgramId { get; set; }
属性,因为您的public Program Program { get; set; }
作为Program
表的外键存储在数据库中,并由ProgramId
列的约定表示,该列将使用添加的属性表示实体类。
如果您知道引用标识符,则无需从数据库加载Program实体。
然后,您可以更新映射以将model.ProgramId
映射到entity.ProgramId
,并省略对数据库workout.Program = await _repository.GetByIdAsync<Program>(model.ProgramId);
的调用