保存到数据库后用标识更新对象ID



我想找出最好的方法来更新现有对象的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;

最新更新