我试图找出在将现有对象保存到数据库后更新现有对象ID的最佳方法。
E.g。在下面的示例中,ContactDetailID
方法中的test
始终为0,直到我再次实际获取它为止,我希望在项目保存后立即自动更新。
在调用ContactDetailID
后设置context.SaveChanges
下面的代码,并将项目正确保存到数据库中,因此我只需将ID重新推送到用户界面。
这样做的最佳方式是什么?
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();
}
答案 0 :(得分:1)
或者使用这样的东西:
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;
}
答案 1 :(得分:0)
如果您的ID列是自动递增的,它会在SaveChanges
之后自动更新,然后您可以轻松地将return
值添加到用户界面,如下所示:
private void Test()
{
ContactTypeID = 1;
Value = "3";
Save();
return ContactDetailID;
}
以及在分配时创建新ContactDetail();
的原因
this.ContactDetailID = saveItem.ContactDetailID;