У меня есть следующие модели, сопоставленные с EF Core:
public class Choice
{
public int Id { get; set; }
public string Content { get; set; }
public List<ChoicesQuestions> ChoicesQuestions { get; set; }
}
public class ChoicesQuestions
{
public int ChoiceId { get; set; }
public Choice Choice { get; set; }
public int QuestionId { get; set; }
public Question Question { get; set; }
}
public class Question
{
public int Id { get; set; }
public string Content { get; set; }
public List<ChoicesQuestions> ChoicesQuestions { get; set; }
}
, а также ресурсы:
public class ChoiceResource
{
public int Id { get; set; }
public string Content { get; set; }
}
public class AddQuestionResource
{
public int Id { get; set; }
public string Content { get; set; }
public List<ChoiceResource> Choices { get; set; }
}
У меня есть следующие сопоставления:
CreateMap<ChoicesQuestions, ChoiceResource>()
.ForMember(d => d.Id, opt => opt.MapFrom(c => c.ChoiceId))
.ForMember(d => d.Content, opt => opt.MapFrom(c => c.Choice.Content));
CreateMap<ChoiceResource, ChoicesQuestions>()
.ForMember(d => d.ChoiceId, opt => opt.Ignore())
.ForMember(d => d.Choice, opt => opt.Ignore())
.AfterMap((o, c) =>
{
c.Choice = new Choice();
c.Choice.Content = o.Content;
});
CreateMap<AddQuestionResource, Question>()
.ForMember(o => o.ChoicesQuestions, opt => opt.MapFrom(x => x.Choices));
CreateMap<Question, AddQuestionResource>();
Яиспользуя этот код в контроллере (отправка от клиента addQuestionResource):
var question = _mapper.Map<Question>(addQuestionResource);
От клиента я отправляю Вопрос с выбором.Теперь код работает нормально, но проблема в том, что он постоянно добавляет новые объекты в мою базу данных, даже если они имеют одинаковое содержимое.Чего я хочу добиться, так это обнаружить, существует ли полученный выбор в базе данных, и если да -> не создавать новый, только добавить идентификатор существующего отношения ко многим ко многим.Я полагаю, что я должен каким-то образом использовать dbcontext в классе MappingProfile, но я не знаю, как правильно подходить к такого рода проблемам.Должен ли я использовать Automapper вообще для этого?