我想在EF插入一個新的實體:添加實體實體框架中插入空記錄
public class Ad
{
// Primary properties
public int Kms { get; set; }
// Navigation properties
public virtual Model Model { get; set; }
}
我從視圖接收模式是這樣的(例如值):
公里= 222 Model.Id = 3
然後,當我執行實體框架的Add和SaveChanges時,我得到一個插入模型表(生成一個新的ID)和一個記錄在廣告表中的NULL記錄新插入的模型ID。
這是怎麼發生的?
服務層:
public void CreateAd(CreateAdDto adDto)
{
var adDomain = Mapper.Map<CreateAdDto, Ad>(adDto);
_adRepository.Add(adDomain);
_adRepository.Save();
}
存儲庫:
public void Add(T entity)
{
_dbSet.Add(entity);
}
public void Save()
{
try
{
_dataContext.SaveChanges();
}
catch (DbEntityValidationException e)
{
var s = e.EntityValidationErrors.ToList();
throw;
}
}
視圖模型:
public class CreateAdViewModel
{
// Primary properties
public string Version { get; set; }
public int Kms { get; set; }
public int Year { get; set; }
public decimal Price { get; set; }
public int Make_Id { get; set; }
public int Model_Id { get; set; }
// Navigation properties
public IEnumerable<SelectListItem> MakeList { get; set; }
public IEnumerable<SelectListItem> ModelList { get; set; }
}
DTO:
public class CreateAdDto
{
// Primary properties
public int Kms { get; set; }
public int Model_Id { get; set; }
}
的映射:
Mapper.CreateMap<CreateAdDto, Ad>().ForMember(dest => dest.Model, opt => opt.MapFrom(src => new Model { Id = src.Model_Id }));
你能告訴我們你插入和保存的部分代碼嗎? – Ammar
您是否在SaveChanges操作之前檢查您的模型值? –
向我們展示了例外的堆棧 – Jorge