Die Datenbank wird mit der Attach-Methode nicht aktualisiert

Ich versuche LINQ to SQL zu lernen. Ich habe die Einfügemethode erfolgreich implementiert und die Daten werden in die Datenbank eingefügt. Wenn ich versuche, die vorhandenen Daten zu aktualisieren, werden sie nicht in die Datenbank übernommen, obwohl es keine Ausnahme gibt. Können Sie bitte etwas Licht auf das werfen, was schief gelaufen sein könnte?

Hinweis: AccountNumber ist der Primärschlüssel

BEARBEITEN

Wenn Sie den Codezeilen folgen, funktioniert es. Aber kannst du das erklären?warum brauchen wir eine Auffrischung?

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

Hinweis:

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

Die Aktualisierung wurde mit der Option KeepCurrentValues ​​durchgeführt. Ich verstehe, dass die Werte, die ich im Entitätsobjekt aktualisiert habe, beibehalten werden. Ich liefere (nur) die erforderlichen Informationen, die in der Datenbank aktualisiert werden müssen. Ist diese Aktualisierung erforderlich?die restlichen Spaltenwerte erhalten?

Klient

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();


   }

Geschäftsschicht

    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();

    }

Repository

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);
    }


}

LESEN

LINQ to SQL: Aktualisierung ohne Aktualisierung bei "UpdateCheck = Never"

Linq To SQL-Entitätsobjekt anhängen / aktualisieren

Was macht LINQ-to-SQL-Tabelle <T> .Attach?

Warum sollte ich GetOriginalEntityState () in meiner Speichermethode für das LINQ To SQL-Repository verwenden?

Wie kann ich alle Änderungen in einem Linq to SQL DataContext ablehnen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage