Automapper仅将ID将EF实体映射回空对象

时间:2018-11-29 20:36:53

标签: entity-framework-core automapper

因此,当我将DTO映射到EF实体类型时,就使用给定的方法。关系/导航属性填充有一个空实例(除了int Id之外)。

当我这样做

public int Create(TimeEntryDTO newTimeEntry)
{
    var tempItem = _mapper.Map<TimeEntryDTO, TimeEntry>(newTimeEntry);
    _db.TimeEntries.Add(tempItem);
    _db.SaveChanges();
    return tempItem.Id;
}

我遇到错误

  

无法为表“雇员”中的身份列插入显式值   当IDENTITY_INSERT设置为OFF时。”

所以我最终不得不这样做,以便我可以添加TimeEntry行并保存更改。

public int Create(TimeEntryDTO newTimeEntry)
{
    var tempItem = _mapper.Map<TimeEntryDTO, TimeEntry>(newTimeEntry);
    tempItem.Employee = _db.Employees.Single(x => x.Id == tempItem.Employee.Id);
    tempItem.Job = _db.Jobs.Single(x => x.Id == tempItem.Job.Id);
    tempItem.Category = _db.WorkCategories.Single(x => x.Id == tempItem.Category.Id);
    _db.TimeEntries.Add(tempItem);
    _db.SaveChanges();
    return tempItem.Id;
}

有没有更简单的方法(阅读:更自动的方法)来解决这个问题?

实体类

public class TimeEntry
{
    [Key]
    public int Id { get; set; }

    [Required]
    public double TimeSpentHours { get; set; }

    [Required]
    public DateTime Date { get; set; }

    [Required]
    public Employee Employee { get; set; }

    [Required]
    public Job Job { get; set; }

    public WorkCategory Category { get; set; } 
}

0 个答案:

没有答案