因此,当我将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; }
}