Banco de dados não é atualizado com o método Attach

Eu estou tentando aprender LINQ to SQL. Eu tenho implementado com sucesso o método insert e os dados estão sendo inseridos no banco de dados. Quando tento atualizar os dados existentes, eles não são refletidos no banco de dados, embora não haja exceção. Você pode por favor colocar alguma luz sobre o que poderia ter dado errado?

Nota: AccountNumber é chave primária

EDITAR

Seguir linhas de código faz com que funcione. Mas você pode explicarporque precisamos de uma atualização?

    accountRepository.UpdateChangesByAttach(acc1);
    accountRepository.RefreshEntity(acc1);
    accountRepository.SubmitChanges();

Nota:

DataContext.Refresh method refreshes object state by using data in the database.

A atualização foi feita com a opção KeepCurrentValues. O que eu entendo é que ele reterá os valores que atualizei no objeto de entidade. Estou fornecendo (apenas) as informações necessárias que precisam ser atualizadas no banco de dados. Esta atualização é necessáriapara obter os valores da coluna restantes?

Cliente

using (var context = new   RepositoryLayer.LibraryManagementClassesDataContext(connectionstring)) 
   {
            context.Log = Console.Out;

            RepositoryLayer.Repository<RepositoryLayer.Account> selectedRepository = new RepositoryLayer.Repository<RepositoryLayer.Account>();
            //selectedRepository.Context = context;
            AccountBusiness accountBl = new AccountBusiness(selectedRepository);

            //Transaction 1
            //List<RepositoryLayer.Account> accountList = accountBl.GetAllAccounts();

            //Transaction 2
            //accountBl.InsertAccounts();

            //Transaction3
            accountBl.UpdateAccounts();


   }

Camada Empresarial

    public void  InsertAccounts()
    {
        RepositoryLayer.Account acc1 = new RepositoryLayer.Account();
        acc1.AccountNumber = 4;
        acc1.AccountType = "Contract";
        acc1.Duration = 6;

        accountRepository.InsertOnSubmit(acc1);
        accountRepository.SubmitChanges();

    }

    public void UpdateAccounts()
    {
        RepositoryLayer.Account acc1 = new RepositoryLayer.Account();
        acc1.AccountNumber = 4;
        acc1.AccountType = "TEST";
        acc1.Duration = 10;

        accountRepository.UpdateChangesByAttach(acc1);
        accountRepository.SubmitChanges();

    }

Repositório

public class Repository<T> : IRepository<T> where T : class
{
    public System.Data.Linq.DataContext Context
    {
        get;
        set;
    }

    public virtual System.Data.Linq.ITable GetTable()
    {
        return Context.GetTable<T>();
    }


    public virtual void InsertOnSubmit(T entity)
    {
        GetTable().InsertOnSubmit(entity);
    }

    public virtual void UpdateChangesByAttach(T entity)
    {
        GetTable().Attach(entity);
    }


    public virtual void SubmitChanges()
    {
        Context.SubmitChanges();
    }

    public virtual void RefreshEntity(T entity)
    {
        Context.Refresh(System.Data.Linq.RefreshMode.KeepCurrentValues, entity);
    }


}

LEITURA

LINQ to SQL: Atualizando sem atualizar quando “UpdateCheck = Never”

Linq para SQL anexar / atualizar objeto de entidade

O que o LINQ to SQL Table <T> .Attach faz?

Por que devo usar GetOriginalEntityState () no meu método de salvamento do repositório LINQ To SQL?

Como posso rejeitar todas as alterações em um DataContext do Linq to SQL?

questionAnswers(2)

yourAnswerToTheQuestion