ok

alphons <alphons@heijden.com> 27 Apr 2025, 15:44
84240a993af8517fd88b8b6c05d863386fb0f338
2 files changed
  • JsonContextDb.JsonContext/JsonContext.cs
  • JsonContextDb.TestApp/Program.cs
diff --git a/JsonContextDb.JsonContext/JsonContext.cs b/JsonContextDb.JsonContext/JsonContext.cs
index 5017c93..a35996c 100644
--- a/JsonContextDb.JsonContext/JsonContext.cs
+++ b/JsonContextDb.JsonContext/JsonContext.cs
@@ -42,6 +42,7 @@ public class JsonContext(string? dataDirectory, JsonContextOptions? options = nu
public enum ActionType
{
+ Unknown,
Add,
Update,
Remove
@@ -329,7 +330,7 @@ public class JsonContext(string? dataDirectory, JsonContextOptions? options = nu
lock (lockObject)
{
- changes.Add((typeof(MetaData), new MetaData(), ActionType.Update));
+ changes.Add((typeof(MetaData), new MetaData(), ActionType.Unknown));
entityListsBackup = entityLists.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
modifiedTypes = [.. changes.Select(c => c.Type)];
@@ -368,7 +369,8 @@ public class JsonContext(string? dataDirectory, JsonContextOptions? options = nu
snapshots[change.Entity] = ComputeSHA256Hash(change.Entity, jsonContextOptions.SerializerOptions);
//entities.Add(change.Entity); // DONT
- affectedEntities++;
+ if (typeof(MetaData) != change.Entity.GetType())
+ affectedEntities++;
}
else if (change.Action == ActionType.Update)
{
@@ -378,7 +380,8 @@ public class JsonContext(string? dataDirectory, JsonContextOptions? options = nu
{
entities.Remove(existing);
entities.Add(change.Entity);
- affectedEntities++;
+ if (typeof(MetaData) != change.Entity.GetType())
+ affectedEntities++;
}
}
else if (change.Action == ActionType.Remove)
diff --git a/JsonContextDb.TestApp/Program.cs b/JsonContextDb.TestApp/Program.cs
index 9f78949..8007e70 100644
--- a/JsonContextDb.TestApp/Program.cs
+++ b/JsonContextDb.TestApp/Program.cs
@@ -5,27 +5,33 @@ using System.Diagnostics;
var context = new JsonContext(Path.Combine(AppContext.BaseDirectory, "Data"));
var users = context.Set<User>();
-//var vsers = context.Set<Vser>();
+var vsers = context.Set<Vser>();
if (!users.Any())
{
-
- for (int i = 1; i <= 5; i++)
+ var nr = 2;
+ for (int i = 1; i <= nr; i++)
{
users.Add(new User
{
Name = $"annet {i}"
});
- //vsers.Add(new Vser
- //{
- // Name = $"alphons {i}"
- //});
+ vsers.Add(new Vser
+ {
+ Name = $"alphons {i}"
+ });
}
+
+ Debug.Assert(users.Count() == nr);
+ Debug.Assert(vsers.Count() == nr);
+
var cnt = await context.SaveChangesAsync();
- Console.WriteLine($"Count:{cnt}");
+ Debug.Assert(cnt == 2 * nr);
}
+var total = users.Count();
+
var sw = Stopwatch.StartNew();
var newUser = new User
@@ -35,36 +41,32 @@ var newUser = new User
users.Add(newUser);
-Console.WriteLine($"Id:{newUser.Id}");
+Debug.Assert(users.Count() == total + 1);
-var count1 = await context.SaveChangesAsync();
+Debug.Assert(newUser.Id == 0);
-Console.WriteLine($"Count:{count1} Id:{newUser.Id}");
+var count1 = await context.SaveChangesAsync();
-var user = users.FirstOrDefault(x => x.Name.Contains("99998"));
+Debug.Assert(count1 == 1);
-if (user != null)
- Console.WriteLine($"{user.Name} - {user.Id} {sw.ElapsedMilliseconds} mS");
-else
- Console.WriteLine("not found");
+Debug.Assert(newUser.Id != 0);
-sw = Stopwatch.StartNew();
+//var user = users.FirstOrDefault(x => x.Name.Contains("99998"));
-user = users.FirstOrDefault(x => x.Name.Contains("Tester"));
+//Debug.Assert(user != null);
-if (user != null)
- Console.WriteLine($"{user.Name} - {user.Id} {sw.ElapsedMilliseconds} mS");
-else
- Console.WriteLine("not found");
+//if (user != null)
+// Console.WriteLine($"{user.Name} - {user.Id} {sw.ElapsedMilliseconds} mS");
-if(user != null)
- user.Name = "Tester 1";
+//Debug.Assert(users.Count() == total + 1);
-sw = Stopwatch.StartNew();
+newUser.Name = "Tester 1";
var count = await context.SaveChangesAsync();
-Console.WriteLine($"Count:{count} {sw.ElapsedMilliseconds} mS");
+Debug.Assert(count == 1);
+
+Console.WriteLine($"{sw.ElapsedMilliseconds} mS");
Console.ReadLine();