示例#1
0
 public void CSharp_DbContext_template_allows_lazy_loading_to_be_turned_off()
 {
     using (var context = new AdvancedPatternsModelFirstContext())
     {
         Assert.False(context.Configuration.LazyLoadingEnabled);
     }
 }
        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);
                }
            }
        }
示例#3
0
        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());
                }
            }
        }
示例#4
0
 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);
     }
 }
示例#5
0
        public void Executing_a_stored_proc_mapped_to_a_function_import_honors_no_tracking_merge_option()
        {
            using (var context = new AdvancedPatternsModelFirstContext())
            {
                // Act
                context.AllOfficesStoredProc(MergeOption.NoTracking).ToList();

                // Verify
                Assert.True(context.ChangeTracker.Entries <OfficeMf>().Count() == 0);
            }
        }
示例#6
0
 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);
     }
 }
示例#7
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);
            }
        }
示例#8
0
        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);
            }
        }
示例#9
0
        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);
            }
        }
示例#10
0
        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());
            }
        }
示例#11
0
        public void Executing_a_stored_proc_mapped_to_a_function_import_with_merge_option_overwrite_changes()
        {
            using (var context = new AdvancedPatternsModelFirstContext())
            {
                // Arrange
                var office = context.Offices.Find("1/1221", AdvancedPatternsModelFirstInitializer.KnownBuildingGuid);
                context.Entry(office).Property("Description").CurrentValue = "Test";

                // Act
                context.AllOfficesStoredProc(MergeOption.OverwriteChanges).ToList();

                // Verify
                Assert.True(context.Entry(office).State == EntityState.Unchanged);
                Assert.True(context.ChangeTracker.Entries <OfficeMf>().Count() == 4);
            }
        }
示例#12
0
        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);
                new List <string>
                {
                    "1/1221",
                    "1/1223"
                }.ForEach(n => offices.Where(o => o.Number == n).Single());
            }
        }
示例#13
0
        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());
            }
        }
示例#14
0
        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);
                }
            }
        }
示例#15
0
        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);
                var officeNumbers = new List <string>
                {
                    "1/1221", "1/1223"
                };

                foreach (var officeNumber in officeNumbers)
                {
                    offices.Single(o => o.Number == officeNumber);
                }
            }
        }