using System.Collections.Generic;
using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
public static void Main()
using (var connection = new SqliteConnection("DataSource=:memory:"))
var options = new DbContextOptionsBuilder<TestDatabaseContext>()
using (var db = new TestDatabaseContext(options))
db.Database.EnsureCreated();
using (var db = new TestDatabaseContext(options))
db.Devices.Add(new Device { Id = 1, OperatingSystem = "Android" });
db.Devices.Add(new Device { Id = 2, OperatingSystem = "iOS" });
db.Devices.Add(new Device { Id = 3, OperatingSystem = "Windows10"});
db.Devices.Add(new Device { Id = 4, OperatingSystem = "Windows11"});
using (var db = new TestDatabaseContext(options))
foreach (Device device in db.Devices)
Console.WriteLine("Device Id: " + device.Id + ", name: '" + device.OperatingSystem + "'.");
using (var db = new TestDatabaseContext(options))
var user1 = new User() { Name = "TestUser1" };
var device1 = db.Devices.FirstOrDefaultAsync(d => d.Id == 1).Result;
user1.Devices.Add(device1);
var user2 = new User() { Name = "TestUser2" };
user2.Devices.Add(db.Devices.FirstOrDefaultAsync(d => d.Id == 1).Result);
user2.Devices.Add(db.Devices.FirstOrDefaultAsync(d => d.Id == 3).Result);
using (var db = new TestDatabaseContext(options))
foreach (User user in db.Users.Include(d => d.Devices))
foreach (Device device in user.Devices)
Console.WriteLine("User Id: " + user.Id + ", username: '" + user.Name + "', Device Id: " + device.Id + ", name: '" + device.OperatingSystem + "'.");
internal class TestDatabaseContext : DbContext
public DbSet<Device> Devices
public TestDatabaseContext()
public TestDatabaseContext(DbContextOptions<TestDatabaseContext> options) : base(options)
public List<Device> Devices
public string OperatingSystem