Code · 87 lines · 2009 bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87using Microsoft.EntityFrameworkCore;
using System.Diagnostics;

namespace JsonContextDb.TestApp;

public class EFTester
{
	public static async Task Main()
	{
		await using var context = new EFUsersContext(
			new DbContextOptionsBuilder<EFUsersContext>()
			.UseInMemoryDatabase(databaseName: "UsersDb")
			.Options);

		context.Users.AddRange(
			new User { Name = "Alphons" },
			new User { Name = "Annet" }
		);

		Debug.Assert(context.Users.Count() == 0);

		var cnt = await context.SaveChangesAsync();

		var tttt = context.Users;

		Debug.Assert(cnt == 2);

		Debug.Assert(context.Users.Count() == 2);

		var users = await context.Users
			.Where(p => p.Name.Contains('A'))
			.OrderBy(p => p.Name)
			.ToListAsync();

		foreach (var user in users)
		{
			Console.WriteLine($"Id:{user.Id} User: {user.Name}");
		}

		var alphons = await context.Users.FirstOrDefaultAsync(p => p.Name == "Alphons");

		if (alphons != null)
		{
			alphons.Name = "Alphonsje";

			var name = context.Users.ToList()[0].Name;

			Debug.Assert(name == "Alphonsje");

			var cnt2 = await context.SaveChangesAsync();

			Debug.Assert(cnt2 == 1);

			Debug.Assert(context.Users.Where(x => x.Id == 1).FirstOrDefault()?.Name == "Alphonsje");

			Console.WriteLine($"\nBijgewerkte Name voor {alphons.Name}");
		}

		var alphonsDelete = await context.Users
			.FirstOrDefaultAsync(p => p.Name == "Alphonsje");

		if (alphonsDelete != null)
		{
			context.Users.Remove(alphonsDelete);

			Debug.Assert(context.Users.Where(x => x.Id == 1).FirstOrDefault()?.Name == "Alphonsje");

			var cnt3 = await context.SaveChangesAsync();

			Debug.Assert(cnt3 == 1);

			Console.WriteLine($"Alphonsje verwijderd {cnt3}");
		}

		Console.WriteLine("\nResterende users:");
		await foreach (var user in context.Users.AsAsyncEnumerable())
		{
			Console.WriteLine($"Id:{user.Id} User: {user.Name}");
		}
	}
}


public class EFUsersContext(DbContextOptions<EFUsersContext> options) : DbContext(options)
{
	public DbSet<User> Users { get; set; }
}