© 2026 Hedgehog Software, LLC

TwitterGitHubDiscord
More
CommunitiesDocsAboutTermsPrivacy
Search
Star
Setup for Free
C#C
C#•6mo ago•
21 replies
Ancient77

Entity framework overwriting List works?

I always thought that just overwriting a List like
solution.Skus = [];
solution.Skus = [];

doesnt work since the change tracker doesnt update everything, but after some testing it seems to work. Why does everyone then always says to not do this?

        var sku1 = new Sku
        {
            SkuCode = "Sku1",
            Name = "Sku1",
            BusinessCode = "BusinessCode1"
        };
        _newDb.Context.Solutions.Add(new Data.Models.Solution
        {
            Name = "1",
            Skus = [sku1]
        });
        _newDb.Context.Solutions.Add(new Data.Models.Solution
        {
            Name = "2",
            Skus = [sku1]
        });
        await _newDb.Context.SaveChangesAsync();
        _newDb.Context.ChangeTracker.Clear();
        var test1 = await _newDb.Context.Solutions.Include(x => x.Skus).FirstOrDefaultAsync();
        Assert.That(test1.Name, Is.EqualTo("1"));
        Assert.That(test1.Skus.Single().Name, Is.EqualTo("Sku1"));
        test1.Skus = [new Sku
        {
            SkuCode = "Sku2",
            Name = "Sku2",
            BusinessCode = "BusinessCode2"
        }];
        await _newDb.Context.SaveChangesAsync();
        _newDb.Context.ChangeTracker.Clear();
        var test2 = await _newDb.Context.Solutions.Include(x => x.Skus).ToListAsync();
        Assert.That(test2.Single(x => x.Name == "1").Skus.Single().Name, Is.EqualTo("Sku2"));
        var sku1 = new Sku
        {
            SkuCode = "Sku1",
            Name = "Sku1",
            BusinessCode = "BusinessCode1"
        };
        _newDb.Context.Solutions.Add(new Data.Models.Solution
        {
            Name = "1",
            Skus = [sku1]
        });
        _newDb.Context.Solutions.Add(new Data.Models.Solution
        {
            Name = "2",
            Skus = [sku1]
        });
        await _newDb.Context.SaveChangesAsync();
        _newDb.Context.ChangeTracker.Clear();
        var test1 = await _newDb.Context.Solutions.Include(x => x.Skus).FirstOrDefaultAsync();
        Assert.That(test1.Name, Is.EqualTo("1"));
        Assert.That(test1.Skus.Single().Name, Is.EqualTo("Sku1"));
        test1.Skus = [new Sku
        {
            SkuCode = "Sku2",
            Name = "Sku2",
            BusinessCode = "BusinessCode2"
        }];
        await _newDb.Context.SaveChangesAsync();
        _newDb.Context.ChangeTracker.Clear();
        var test2 = await _newDb.Context.Solutions.Include(x => x.Skus).ToListAsync();
        Assert.That(test2.Single(x => x.Name == "1").Skus.Single().Name, Is.EqualTo("Sku2"));
C# banner
C#Join
We are a programming server aimed at coders discussing everything related to C# (CSharp) and .NET.
61,871Members
Resources

Similar Threads

Was this page helpful?
Recent Announcements

Similar Threads

❔ Entity Framework. Rental list
C#CC# / help
3y ago
Entity framework
C#CC# / help
14mo ago
❔ Entity Framework
C#CC# / help
3y ago
❔ Entity Framework
C#CC# / help
4y ago