Exemple #1
0
        public void ComparePropertyComputedColNameReversed()
        {
            //SETUP
            var           options = GetComputedColDbOptions();
            DatabaseModel localDatabaseModel;

            using (var context = new MyEntityComputedColDbContext(options))
            {
                var dtService        = context.GetDesignTimeService();
                var serviceProvider  = dtService.GetDesignTimeProvider();
                var factory          = serviceProvider.GetService <IDatabaseModelFactory>();
                var connectionString = context.Database.GetDbConnection().ConnectionString;
                context.Database.EnsureCreated();
                localDatabaseModel = factory.Create(connectionString, new string[] { }, new string[] { });
            }

            using (var context = new MyEntityDbContext(_options))
            {
                var handler = new Stage1Comparer(context.Model, context.GetType().Name);

                //ATTEMPT
                var hasErrors = handler.CompareModelToDatabase(localDatabaseModel);

                //VERIFY
                hasErrors.ShouldBeTrue();
                var errors = CompareLog.ListAllErrors(handler.Logs).ToList();
                errors.Count.ShouldEqual(3);
                errors[0].ShouldEqual(
                    "DIFFERENT: MyEntity->Property 'MyDateTime', column type. Expected = datetime2, found = datetime");
                errors[1].ShouldEqual(
                    "DIFFERENT: MyEntity->Property 'MyDateTime', computed column sql. Expected = <null>, found = getutcdate()");
                errors[2].ShouldEqual(
                    "DIFFERENT: MyEntity->Property 'MyDateTime', value generated. Expected = Never, found = OnAddOrUpdate");
            }
        }
Exemple #2
0
        public void ComparePropertyComputedColSelf()
        {
            //SETUP
            var options = GetComputedColDbOptions();

            using (var context = new MyEntityComputedColDbContext(options))
            {
                var dtService        = context.GetDesignTimeService();
                var serviceProvider  = dtService.GetDesignTimeProvider();
                var factory          = serviceProvider.GetService <IDatabaseModelFactory>();
                var connectionString = context.Database.GetDbConnection().ConnectionString;
                context.Database.EnsureCreated();
#if NETCOREAPP2_1
                var localDatabaseModel = factory.Create(connectionString, new string[] { }, new string[] { });
#elif NETCOREAPP3_0
                var localDatabaseModel = factory.Create(connectionString,
                                                        new DatabaseModelFactoryOptions(new string[] { }, new string[] { }));
#endif

                var handler = new Stage1Comparer(context.Model, context.GetType().Name);

                //ATTEMPT
                var hasErrors = handler.CompareModelToDatabase(localDatabaseModel);

                //VERIFY
                hasErrors.ShouldBeTrue();
                //The setting of a computed col changed the column type
                var errors = CompareLog.ListAllErrors(handler.Logs).ToList();
                errors.Count.ShouldEqual(1);
                errors[0].ShouldEqual(
                    "DIFFERENT: MyEntity->Property 'MyDateTime', column type. Expected = datetime2, found = datetime");
            }
        }
        public void TestSqlLiteAcceptsComputedCol()
        {
            //SETUP
            var options = SqliteInMemory.CreateOptions <MyEntityComputedColDbContext>();

            using (var context = new MyEntityComputedColDbContext(options))
            {
                //ATTEMPT
                context.Database.EnsureCreated();

                //VERIFY
            }
        }
Exemple #4
0
        public void TestSqlLiteDoesNotSupportComputedCol()
        {
            //SETUP
            var options = SqliteInMemory.CreateOptions <MyEntityComputedColDbContext>();

            using (var context = new MyEntityComputedColDbContext(options))
            {
                //ATTEMPT
                var ex = Assert.Throws <NotSupportedException>(() => context.Database.EnsureCreated());

                //VERIFY
                ex.Message.ShouldStartWith("SQLite doesn't support computed columns.");
            }
        }
        public void TestSqlLiteAcceptsComputedColButDoesntWork()
        {
            //SETUP
            var options = SqliteInMemory.CreateOptions <MyEntityComputedColDbContext>();

            using (var context = new MyEntityComputedColDbContext(options))
            {
                context.Database.EnsureCreated();

                //ATTEMPT
                context.Add(new MyEntity());
                var ex = Assert.Throws <DbUpdateException>(() => context.SaveChanges());

                //VERIFY
                Assert.StartsWith("SQLite Error 19: 'NOT NULL constraint failed:", ex.InnerException.Message);
            }
        }
Exemple #6
0
        public void TestInMemoryAcceptsComputedColButDoesntWork()
        {
            //SETUP
            var options = EfInMemory.CreateOptions <MyEntityComputedColDbContext>();

            using (var context = new MyEntityComputedColDbContext(options))
            {
                context.Database.EnsureCreated();

                //ATTEMPT
                context.Add(new MyEntity());
                context.SaveChanges();

                //VERIFY
                context.Set <MyEntity>().First().MyDateTime.ShouldEqual(new DateTime());
            }
        }
Exemple #7
0
        public void ComparePropertyComputedColName()
        {
            //SETUP
            var optionsBuilder = new DbContextOptionsBuilder <MyEntityComputedColDbContext>();

            optionsBuilder.UseSqlServer(_connectionString);
            using (var context = new MyEntityComputedColDbContext(optionsBuilder.Options))
            {
                var handler = new Stage1Comparer(context.Model, context.GetType().Name);

                //ATTEMPT
                var hasErrors = handler.CompareModelToDatabase(_databaseModel);

                //VERIFY
                hasErrors.ShouldBeTrue();
                var errors = CompareLog.ListAllErrors(handler.Logs).ToList();
                errors.Count.ShouldEqual(2);
                errors[0].ShouldEqual(
                    "DIFFERENT: MyEntity->Property 'MyDateTime', computed column sql. Expected = getutcdate(), found = <null>");
                errors[1].ShouldEqual(
                    "DIFFERENT: MyEntity->Property 'MyDateTime', value generated. Expected = OnAddOrUpdate, found = Never");
            }
        }