保存到数据库后用标识更新对象ID
本文关键字:更新 对象 ID 标识 数据库 保存 | 更新日期: 2023-09-27 18:14:45
我想找出最好的方法来更新现有对象的ID保存到数据库后。
。在下面的示例中,test
方法中的ContactDetailID
始终为0,直到我再次实际获得它,我希望在保存项目后立即自动更新此值。
一旦调用context.SaveChanges
并将项目正确保存到数据库中,就会设置ContactDetailID
下面的代码,因此我只需要将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();
}
或者这样写:
private void Test()
{
ContactDetail cd = new ContactDetail();
cd.ContactTypeID = 1;
cd.Value = "3";
cd.Save();
return cd.ContactDetailID;
}
public ContactDetailDTO Save()
{
ContactDetailDAO service = new ContactDetailDAO();
ContactDetailDTO saveItem = new ContactDetailDTO();
if (IsValid(this))
{
saveItem.ContactDetailID = this.ContactDetailID;
saveItem.Value = this.Value;
saveItem.ContactTypeID = this.ContactTypeID;
saveItem=service.Save(saveItem);
this.ContactDetailID = saveItem.ContactDetailID;
}
return saveItem;
}
public ContactDetailDTO Save(ContactDetailDTO ContactDetailDTO)
{
if (ContactDetailDTO.IsNew())
{
return repository.Add(new tblContactDetail
{
ContactDetailID = ContactDetailDTO.ContactDetailID,
Value = ContactDetailDTO.Value,
ContactTypeID = ContactDetailDTO.ContactTypeID
});
}
}
public virtual T 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();
return entity;
}
如果你的ID列是自动递增的,它会在SaveChanges
之后自动更新,然后你可以很容易地把return
的值像这样放在UI上:
private void Test()
{
ContactTypeID = 1;
Value = "3";
Save();
return ContactDetailID;
}
和为什么你创建新的ContactDetail();
当你分配
this.ContactDetailID = saveItem.ContactDetailID;