public void ConcurrencyCheck() { using (MovieDBContext db = new MovieDBContext()) { db.Database.Delete(); db.Database.CreateIfNotExists(); db.Database.ExecuteSqlCommand( @"DROP TABLE IF EXISTS `MovieReleases`"); db.Database.ExecuteSqlCommand( @"CREATE TABLE IF NOT EXISTS `MovieReleases` ( `Id` int(11) NOT NULL, `Name` varbinary(45) NOT NULL, `Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=binary"); MySqlTrace.Listeners.Clear(); MySqlTrace.Switch.Level = SourceLevels.All; GenericListener listener = new GenericListener(); MySqlTrace.Listeners.Add(listener); try { MovieRelease mr = db.MovieReleases.Create(); mr.Id = 1; mr.Name = "Commercial"; db.MovieReleases.Add(mr); db.SaveChanges(); mr.Name = "Director's Cut"; db.SaveChanges(); } finally { db.Database.ExecuteSqlCommand(@"DROP TABLE IF EXISTS `MovieReleases`"); } // Check sql Regex rx = new Regex(@"Query Opened: (?<item>UPDATE .*)", RegexOptions.Compiled | RegexOptions.Singleline); foreach (string s in listener.Strings) { Match m = rx.Match(s); if (m.Success) { st.CheckSql(m.Groups["item"].Value, SQLSyntax.UpdateWithSelect); //Assert.Pass(); } } //Assert.Fail(); } }
public void BadOrderBy() { ReInitDb(); using (MovieDBContext db = new MovieDBContext()) { db.Database.Initialize(true); Movie m1 = new Movie() { Title = "Terminator 1", ReleaseDate = new DateTime(1984, 10, 26) }; Movie m2 = new Movie() { Title = "The Matrix", ReleaseDate = new DateTime(1999, 3, 31) }; Movie m3 = new Movie() { Title = "Predator", ReleaseDate = new DateTime(1987, 6, 12) }; Movie m4 = new Movie() { Title = "Star Wars, The Sith Revenge", ReleaseDate = new DateTime(2005, 5, 19) }; db.Movies.Add(m1); db.Movies.Add(m2); db.Movies.Add(m3); db.Movies.Add(m4); db.SaveChanges(); DateTime filterDate = new DateTime(1986, 1, 1); var q = db.Movies.Where(p => p.ReleaseDate >= filterDate). OrderByDescending(p => p.ReleaseDate).Take(2); string sql = q.ToString(); st.CheckSql(SQLSyntax.NestedOrderBy, sql); // Data integrity testing Movie[] data = new Movie[] { new Movie() { ID = 4, Title = "Star Wars, The Sith Revenge", ReleaseDate = new DateTime(2005, 5, 19) }, new Movie() { ID = 2, Title = "The Matrix", ReleaseDate = new DateTime(1999, 3, 31) } }; int i = 0; foreach (Movie m in q) { Assert.Equal(data[i].ID, m.ID); Assert.Equal(data[i].Title, m.Title); Assert.Equal(data[i].ReleaseDate, m.ReleaseDate); i++; } } }
public void AddingEmptyRow() { using (MovieDBContext ctx = new MovieDBContext()) { ctx.Database.Initialize(true); ctx.EntitySingleColumns.Add(new EntitySingleColumn()); ctx.SaveChanges(); } using (MovieDBContext ctx2 = new MovieDBContext()) { var q = from esc in ctx2.EntitySingleColumns where esc.Id == 1 select esc; Assert.AreEqual(1, q.Count()); } }
public void AlterTableTest() { ReInitDb(); MovieDBContext db = new MovieDBContext(); db.Database.Initialize(true); var l = db.MovieFormats.ToList(); foreach (var i in l) { } MovieFormat m = new MovieFormat(); m.Format = 8.0f; db.MovieFormats.Add(m); db.SaveChanges(); }