public static void InitializeModelFirstDatabases(bool runInitializers = true) { const string prefix = "System.Data.Entity.TestModels.TemplateModels.Schemas."; ResourceUtilities.CopyEmbeddedResourcesToCurrentDir( typeof(TemplateTests).Assembly(), prefix, /*overwrite*/ true, "AdvancedPatterns.edmx", "MonsterModel.csdl", "MonsterModel.msl", "MonsterModel.ssdl"); // Extract the csdl, msl, and ssdl from the edmx so that they can be referenced in the connection string. ModelHelpers.WriteMetadataFiles(File.ReadAllText(@".\AdvancedPatterns.edmx"), @".\AdvancedPatterns"); if (runInitializers) { using (var context = new AdvancedPatternsModelFirstContext()) { context.Database.Initialize(force: false); } using (var context = new MonsterModel()) { Database.SetInitializer(new DropCreateDatabaseAlways<MonsterModel>()); context.Database.Initialize(force: false); } } }
public void Read_and_write_using_AdvancedPatternsModelFirst_created_from_T4_template() { var building18 = CreateBuilding(); using (new TransactionScope()) { using (var context = new AdvancedPatternsModelFirstContext()) { context.Buildings.Add(building18); var foundBuilding = context.Buildings.Find(new Guid(Building18Id)); Assert.Equal("Building 18", foundBuilding.Name); context.SaveChanges(); } using (var context = new AdvancedPatternsModelFirstContext()) { var foundBuilding = context.Buildings.Find(new Guid(Building18Id)); Assert.Equal("Building 18", foundBuilding.Name); Assert.Equal(3, context.Entry(foundBuilding).Collection(b => b.Offices).Query().Count()); var arthursOffice = context.Offices.Single(o => o.Number == "1/1125"); Assert.Same(foundBuilding, arthursOffice.GetBuilding()); } } }
public void Template_generated_context_throws_when_used_in_Code_First_mode() { using ( var context = new AdvancedPatternsModelFirstContext(SimpleConnectionString("AdvancedPatternsModelFirstContext"))) { Assert.Equal( new UnintentionalCodeFirstException().Message, Assert.Throws<UnintentionalCodeFirstException>( () => context.Database.Initialize(force: false)).Message); } }
public void CSharp_DbContext_template_allows_lazy_loading_to_be_turned_off() { using (var context = new AdvancedPatternsModelFirstContext()) { Assert.False(context.Configuration.LazyLoadingEnabled); } }
public void Executing_a_stored_proc_mapped_to_a_function_import_with_merge_option_preserve_changes() { using (var context = new AdvancedPatternsModelFirstContext()) { // Arrange var office1 = context.Offices.Find("1/1221", AdvancedPatternsModelFirstInitializer.KnownBuildingGuid); var office2 = context.Offices.Find("1/1223", AdvancedPatternsModelFirstInitializer.KnownBuildingGuid); context.Entry(office2).Property("Description").CurrentValue = "Test"; // Act var offices = context.AllOfficesStoredProc(MergeOption.PreserveChanges).ToList(); // Verify Assert.True(context.Entry(office1).State == EntityState.Unchanged); Assert.True(context.Entry(office2).State == EntityState.Modified); Assert.True(context.ChangeTracker.Entries<OfficeMf>().Count() == 4); } }
public void Executing_a_stored_proc_mapped_to_a_function_import_honors_no_tracking_merge_option() { using (var context = new AdvancedPatternsModelFirstContext()) { // Act var offices = context.AllOfficesStoredProc(MergeOption.NoTracking).ToList(); // Verify Assert.True(context.ChangeTracker.Entries<OfficeMf>().Count() == 0); } }
public void Can_execute_a_stored_proc_that_returns_no_results_mapped_to_a_function_import() { using (var context = new AdvancedPatternsModelFirstContext()) { var result = context.SkimOffLeaveBalanceStoredProc("Arthur", "Vickers"); Assert.Equal(-1, result); Assert.Equal( 0M, context.Set<CurrentEmployeeMf>().Where(e => e.FirstName == "Arthur").Single().LeaveBalance); } }
public void Can_read_scalar_return_from_a_stored_proc_mapped_to_a_function_import() { using (var context = new AdvancedPatternsModelFirstContext()) { var employeeIds = context.EmployeeIdsInOfficeStoredProc( "1/1221", AdvancedPatternsModelFirstInitializer.KnownBuildingGuid). ToList(); Assert.Equal(1, employeeIds.Count); Assert.Equal("Rowan", context.Employees.Find(employeeIds.Single()).FirstName); } }
public void Can_read_complex_objects_from_a_stored_proc_mapped_to_a_function_import() { using (var context = new AdvancedPatternsModelFirstContext()) { var siteInfo = context.AllSiteInfoStoredProc().ToList(); Assert.Equal(2, siteInfo.Count); new List<string> { "Clean", "Contaminated" }.ForEach( n => siteInfo.Where(o => o.Environment == n).Single()); } }
public void Can_read_entities_from_a_stored_proc_with_parameters_mapped_to_a_function_import_with_merge_option() { using (var context = new AdvancedPatternsModelFirstContext()) { var offices = context.OfficesInBuildingStoredProc( AdvancedPatternsModelFirstInitializer.KnownBuildingGuid, MergeOption.NoTracking).ToList(); Assert.Equal(2, offices.Count); Assert.Equal(0, context.Offices.Local.Count); new List<string> { "1/1221", "1/1223" }.ForEach(n => offices.Where(o => o.Number == n).Single()); } }
public void Can_read_entities_from_a_stored_proc_mapped_to_a_function_import_with_merge_option() { using (var context = new AdvancedPatternsModelFirstContext()) { var offices = context.AllOfficesStoredProc(MergeOption.NoTracking).ToList(); Assert.Equal(4, offices.Count); Assert.Equal(0, context.Offices.Local.Count); new List<string> { "1/1221", "1/1223", "2/1458", "2/1789" }.ForEach( n => offices.Where(o => o.Number == n).Single()); } }
public void Object_space_types_are_loaded_when_code_drops_down_to_ObjectContext() { using (var context = new AdvancedPatternsModelFirstContext()) { var objectContext = ((IObjectContextAdapter)context).ObjectContext; // The following would previously throw because it requires manual o-space loading var results = objectContext.CreateQuery<object>( "select e.Number from AdvancedPatternsModelFirstContext.Offices as e").ToList(); Assert.Equal(4, results.Count); } }
public void Default_container_name_is_set_when_there_is_a_single_container_in_the_model() { using (var context = new AdvancedPatternsModelFirstContext()) { Assert.Equal( "AdvancedPatternsModelFirstContext", ((IObjectContextAdapter)context).ObjectContext.DefaultContainerName); } }
public void Can_read_entities_from_a_stored_proc_with_parameters_mapped_to_a_function_import() { using (var context = new AdvancedPatternsModelFirstContext()) { var offices = context.OfficesInBuildingStoredProc(AdvancedPatternsModelFirstInitializer.KnownBuildingGuid).ToList(); Assert.Equal(2, offices.Count); Assert.Equal(2, context.Offices.Local.Count); var officeNumbers = new List<string> { "1/1221", "1/1223" }; foreach (var officeNumber in officeNumbers) { offices.Single(o => o.Number == officeNumber); } } }
public void Can_read_entities_from_a_stored_proc_mapped_to_a_function_import() { using (var context = new AdvancedPatternsModelFirstContext()) { var offices = context.AllOfficesStoredProc().ToList(); Assert.Equal(4, offices.Count); Assert.Equal(4, context.Offices.Local.Count); var officeNumbers = new List<string> { "1/1221", "1/1223", "2/1458", "2/1789" }; foreach (var officeNumber in officeNumbers) { offices.Single(o => o.Number == officeNumber); } } }