/// <summary> /// Run the demo. /// </summary> public static void Run() { // create demo database file. CreateDemoDatabaseFile(); // create entities to be inserted. DemoNestedEntity nestedEntity = new DemoNestedEntity { Name = "nested_entity_1" }; List <DemoEntity> subEntities = new List <DemoEntity> { new DemoEntity { SubName = "sub_entity_1", ParentEntity = nestedEntity }, new DemoEntity { SubName = "sub_entity_2", ParentEntity = nestedEntity }, new DemoEntity { SubName = "sub_entity_3", ParentEntity = nestedEntity }, }; nestedEntity.SubEntities = subEntities; try { using (DemoContext db = new DemoContext()) { Console.WriteLine($"Is Sqlite database: {db.Database.IsSqlite()}"); // insert entities and save changes to database. db.NestedEntities.Add(nestedEntity); int count = db.SaveChanges(); Console.WriteLine($"{count} records saved to database"); // query all nested entities data. Console.WriteLine(); Console.WriteLine("All nested entities in database:"); foreach (DemoNestedEntity entity in db.NestedEntities) { Console.WriteLine($" - id: '{entity.Id}', name '{entity.Name}'"); } // query all sub entities data. Console.WriteLine(); Console.WriteLine("All sub entities in database:"); foreach (DemoEntity entity in db.Entities) { Console.WriteLine($" - id: '{entity.SubId}', name '{entity.SubName}'"); } } } finally { // print all tables in Sqlite demo database. PrintAllTables(); // remove Sqlite demo database file if not in debug mode. if (!Debugger.IsAttached) { File.Delete(DatabaseFileName); } } }
/// <summary> /// Run the demo. /// </summary> public static void Run() { // create entities to be inserted. DemoNestedEntity nestedEntity = new DemoNestedEntity { Name = "nested_entity_1" }; List <DemoEntity> subEntities = new List <DemoEntity> { new DemoEntity { SubName = "sub_entity_1", ParentEntity = nestedEntity }, new DemoEntity { SubName = "sub_entity_2", ParentEntity = nestedEntity }, new DemoEntity { SubName = "sub_entity_3", ParentEntity = nestedEntity }, }; nestedEntity.SubEntities = subEntities; // sqlite in-memory database only exists while the connection opening. SqliteConnection sqliteConnection = new SqliteConnection("DataSource=:memory:"); sqliteConnection.Open(); // create the database context options for using sqlite in-memory database. DbContextOptions <DemoContext> options = new DbContextOptionsBuilder <DemoContext>() .UseSqlite(sqliteConnection) .Options; try { using (DemoContext db = new DemoContext(options)) { Console.WriteLine($"Is In-Memory database: {db.Database.IsInMemory()}"); Console.WriteLine($"Is IsSqlite database: {db.Database.IsSqlite()}"); // create database schema db.Database.EnsureCreated(); // insert entities and save changes to database. db.NestedEntities.Add(nestedEntity); int count = db.SaveChanges(); Console.WriteLine($"{count} records saved to database"); // query all nested entities data. Console.WriteLine(); Console.WriteLine("All nested entities in database:"); foreach (DemoNestedEntity entity in db.NestedEntities) { Console.WriteLine($" - id: '{entity.Id}', name '{entity.Name}'"); } // query all sub entities data. Console.WriteLine(); Console.WriteLine("All sub entities in database:"); foreach (DemoEntity entity in db.Entities) { Console.WriteLine($" - id: '{entity.SubId}', name '{entity.SubName}'"); } } // print all sqlite database tables: PrintAllTables(sqliteConnection); } finally { // close sqlite connection. if (sqliteConnection.State != ConnectionState.Closed) { sqliteConnection.Close(); } } // the previous sqlite in-memory datbase will be destroyed after connection close. try { sqliteConnection.Open(); PrintAllTables(sqliteConnection); } finally { // close sqlite connection. if (sqliteConnection.State != ConnectionState.Closed) { sqliteConnection.Close(); } } }
/// <summary> /// Run the demo. /// </summary> public static void Run() { // create entities to be inserted. DemoNestedEntity nestedEntity = new DemoNestedEntity { Name = "nested_entity_1" }; List <DemoEntity> subEntities = new List <DemoEntity> { new DemoEntity { SubName = "sub_entity_1", ParentEntity = nestedEntity }, new DemoEntity { SubName = "sub_entity_2", ParentEntity = nestedEntity }, new DemoEntity { SubName = "sub_entity_3", ParentEntity = nestedEntity }, }; nestedEntity.SubEntities = subEntities; // write verbose logs to file in debug mode. ILoggerFactory loggerFactory = null; if (!Debugger.IsAttached) { string logFilePath = Path.Combine(AppContext.BaseDirectory, "EntityFrameworkInMemoryDemo.log"); Stream logStream = File.Create(logFilePath); TextWriterTraceListener traceListener = new TextWriterTraceListener(logStream); SourceSwitch verboseSwitch = new SourceSwitch("VerboseSwitch", "Verbose"); loggerFactory = new LoggerFactory().AddTraceSource(verboseSwitch, traceListener); } try { using (DemoContext db = new DemoContext(loggerFactory)) { Console.WriteLine($"Is In-Memory database: {db.Database.IsInMemory()}"); // insert entities and save changes to database. db.NestedEntities.Add(nestedEntity); int count = db.SaveChanges(); Console.WriteLine($"{count} records saved to database"); // query all nested entities data. Console.WriteLine(); Console.WriteLine("All nested entities in database:"); foreach (DemoNestedEntity entity in db.NestedEntities) { Console.WriteLine($" - id: '{entity.Id}', name '{entity.Name}'"); } // query all sub entities data. Console.WriteLine(); Console.WriteLine("All sub entities in database:"); foreach (DemoEntity entity in db.Entities) { Console.WriteLine($" - id: '{entity.SubId}', name '{entity.SubName}'"); } } } finally { // release log file handler if (loggerFactory != null) { loggerFactory.Dispose(); } } }