Пример #1
0
        /// <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();
                }
            }
        }