我想在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