我试图找出在将现有对象保存到数据库后更新其 ID 的最佳方法。
例如,在下面的示例中,ContactDetailID
在下面的test
方法中始终为 0,直到我再次实际获取它,我想在保存项目后立即自动更新它。
单步执行下面的代码ContactDetailID
被设置一次context.SaveChanges
,并且项目被正确保存到数据库中,所以我只需要将 ID 推回 UI。
做这个的最好方式是什么?
private void Test()
{
int id = 0
ContactDetail cd = new ContactDetail();
cd.ContactTypeID = 1;
cd.Value = "3";
cd.Save();
id = cd.ContactDetailID;
}
public void Save()
{
ContactDetailDAO service = new ContactDetailDAO();
ContactDetailDTO saveItem = new ContactDetailDTO();
if (IsValid(this))
{
saveItem.ContactDetailID = this.ContactDetailID;
saveItem.Value = this.Value;
saveItem.ContactTypeID = this.ContactTypeID;
service.Save(saveItem);
this.ContactDetailID = saveItem.ContactDetailID;
}
}
public void Save(ContactDetailDTO ContactDetailDTO)
{
if (ContactDetailDTO.IsNew())
{
repository.Add(new tblContactDetail
{
ContactDetailID = ContactDetailDTO.ContactDetailID,
Value = ContactDetailDTO.Value,
ContactTypeID = ContactDetailDTO.ContactTypeID
});
}
}
public virtual void Add(T entity)
{
context.Entry(entity).State = System.Data.EntityState.Added;
if (entity == null)
{
throw new ArgumentException("Cannot add a null entity.");
}
this.context.Set<T>().Add(entity);
this.context.SaveChanges();
}