static void QueryingManyToMany()
        {
            using (var context = new EnrollmentContext())
            {
                //var instructor =
                //    context.Instructors
                // .Include(x => x.Courses)
                // .ThenInclude(e => e.Enrollments)
                // .ThenInclude(s => s.Student)
                // .FirstOrDefault(x => x.Name.Contains("Bob"));

                var instructor = context.Instructors.SingleOrDefault(x => x.Name.Contains("Bob"));

                var bobsCourseInfo =
                    context.Courses
                    .Where(x => x.InstructorId == instructor.InstructorId)
                    .Select(x => new
                {
                    Course = new
                    {
                        Title    = x.Title,
                        Students = x.Enrollments.Select(e => e.Student)
                    }
                })
                    .ToList();
            }
        }
예제 #2
0
        private void Initialize()
        {
            serviceProvider = new ServiceCollection()
                              .AddDbContext <EnrollmentContext>
                              (
                options =>
            {
                options.UseInMemoryDatabase("Enrollment");
                options.UseInternalServiceProvider(new ServiceCollection().AddEntityFrameworkInMemoryDatabase().BuildServiceProvider());
            }
                              )
                              .AddTransient <IEnrollmentStore, EnrollmentStore>()
                              .AddTransient <IEnrollmentRepository, EnrollmentRepository>()
                              .AddSingleton <AutoMapper.IConfigurationProvider>
                              (
                new MapperConfiguration(cfg =>
            {
                cfg.AddMaps(typeof(EnrollmentProfile).GetTypeInfo().Assembly);
                cfg.AddMaps(typeof(GroupingProfile).GetTypeInfo().Assembly);
                cfg.AddProfile <ExpansionParameterToViewMappingProfile>();
                cfg.AddProfile <ExpansionViewToOperatorMappingProfile>();
            })
                              )
                              .AddTransient <IMapper>(sp => new Mapper(sp.GetRequiredService <AutoMapper.IConfigurationProvider>(), sp.GetService))
                              .BuildServiceProvider();

            EnrollmentContext context = serviceProvider.GetRequiredService <EnrollmentContext>();

            context.Database.EnsureCreated();

            Task.Run(async() => await Seed_Database(serviceProvider.GetRequiredService <IEnrollmentRepository>())).Wait();
        }
        static void Main(string[] args)
        {
            var context = new EnrollmentContext();

            if (!context.Schedules.Any())
            {
                var schedule = new Schedule()
                {
                    Title = "Schedule 1"
                };

                schedule.Instances.Add(new Instance {
                    Date = DateTime.Now
                });
                schedule.Instances.Add(new Instance {
                    Date = DateTime.Now.AddDays(1)
                });

                context.Schedules.Add(schedule);
                context.SaveChanges();
            }


            var sc = context.Schedules
                     .Include(x => x.Instances)
                     .SingleOrDefault(x => x.Id == 1);

            sc.Instances.Remove(sc.Instances.First());
            context.SaveChanges();


            Console.WriteLine("asd");
        }
        static void Like_Search()
        {
            var context = new EnrollmentContext();
            var name    = "%Taz%";

            context.Students.SingleOrDefault(s => EF.Functions.Like(s.Name, name));
        }
 public static void RunRawSqlInterpolated()
 {
     using (var context = new EnrollmentContext())
     {
         var stats = context.CourseStats.FromSqlInterpolated($"Select * from CourseStat WHERE CourseId={2}").ToList();
         stats.ForEach(st => Console.WriteLine(st.Title));
     }
 }
 public static void DisplayFromCourseView()
 {
     using (var context = new EnrollmentContext())
     {
         var stats = context.CourseStats.ToList();
         stats.ForEach(st => Console.WriteLine(st.Title));
     }
 }
예제 #7
0
 public Enrollment(string subject, DateTime validUntil, Algorithms algorithm, int keyLength, bool machineContext)
 {
     _extsToAdd    = new List <CX509Extension>();
     Subject       = subject;
     Expiration    = validUntil;
     HashAlgorithm = algorithm;
     KeyLength     = keyLength;
     Context       = new EnrollmentContext(machineContext);
 }
 static void GetAllCourses()
 {
     using (var context = new EnrollmentContext())
     {
         var courses = context.Courses
                       .Include(c => c.Instructor)
                       .ToList();
         courses.ForEach(c => Console.WriteLine($"{c.Title} \n\tby {c.Instructor.Name}"));
     }
 }
 static void Paginate()
 {
     using (var context = new EnrollmentContext())
     {
         context
         .Courses
         .Skip(1)
         .Take(2)
         .ToList();
     }
 }
예제 #10
0
        public void CanInsertInstructorIntoDatabse()
        {
            var builder = new DbContextOptionsBuilder();

            builder.UseInMemoryDatabase("InstructorDb");
            using (var context = new EnrollmentContext(builder.Options))
            {
                var instructor = new Instructor();
                context.Instructors.Add(instructor);
                Assert.AreEqual(EntityState.Added, context.Entry(instructor).State);
            }
        }
 static void QueryAsNoTracking()
 {
     using (var context = new EnrollmentContext())
     {
         context
         .Courses
         .AsNoTracking()
         .Skip(1)
         .Take(2)
         .ToList();
     }
 }
        static void InsertCourseWithFK(int id)
        {
            var newCourse = new Course()
            {
                InstructorId = id, Title = "New Chopstick mastery course", StartDate = DateTime.Now, EndDate = DateTime.Now
            };

            using (var newContext = new EnrollmentContext())
            {
                newContext.Courses.Add(newCourse);
                newContext.SaveChanges();
            }
        }
        public static void RunRawSql()
        {
            using (var context = new EnrollmentContext())
            {
                var stats = context.CourseStats.FromSqlRaw("Select * from CourseStat").ToList();
                stats.ForEach(st => Console.WriteLine(st.Title));

                var id = 2;
                stats = context.CourseStats.FromSqlRaw("Select * from CourseStat WHERE CourseId = {0}", id).ToList();

                stats.ForEach(st => Console.WriteLine(st.Title));
            }
        }
        static void Display_Students_Of_Course_CleanCode()
        {
            var context = new EnrollmentContext();
            var course  = context.Courses
                          .Include("Enrollments")
                          .FirstOrDefault(x => x.CourseId == 4);

            foreach (var item in course.Enrollments)
            {
                context.Entry(item).Reference(x => x.Student).Load();
                Console.WriteLine(item.Student.Name);
            }
        }
 static void ProjectAndJoin()
 {
     using (var context = new EnrollmentContext())
     {
         var courses = context.Courses
                       .Where(x => x.Enrollments.Count > 2)
                       .Select(x => new
         {
             Title      = x.Title,
             Instructor = x.Instructor.Name
         })
                       .ToList();
     }
 }
        static void EagerLoading()
        {
            using (var context = new EnrollmentContext())
            {
                context.Students.
                Include(x => x.Enrollments).
                ToList();

                context.Courses
                .Include(x => x.Instructor)
                .ThenInclude(x => x.Courses)
                .ToList();
            }
        }
 static void UpdateInstructor(int id)
 {
     using (var context = new EnrollmentContext())
     {
         var instructor = context.Instructors
                          .Include("Courses")
                          .FirstOrDefault(i => i.InstructorId == id);
         instructor.Courses.Add(new Course()
         {
             Title = "Mastering chop sticks 2", StartDate = DateTime.Now, EndDate = DateTime.Now
         });
         context.Instructors.Update(instructor);
         context.SaveChanges();
     }
 }
        public static void GetCourseDetailByInstructor(int id)
        {
            using (var context = new EnrollmentContext())
            {
                //var stats = context.CourseDetails
                //    .FromSqlRaw("EXEC GetCourseByInstructor {0}", id)
                //    .ToList();
                //stats.ForEach(st => Console.WriteLine($"{st.Title} - by {st.Name}, Number of students:  {st.NumOfEnrolledStudents}"));

                var stats = context.Set <CourseDetail>()
                            .FromSqlRaw("EXEC GetCourseByInstructor {0}", id)
                            .ToList();
                stats.ForEach(st => Console.WriteLine($"{st.Title} - by {st.Name}, Number of students:  {st.NumOfEnrolledStudents}"));
            }
        }
        static void UpdateUsingEntry()
        {
            var context    = new EnrollmentContext();
            var instructor = context.Instructors
                             .Include(i => i.Courses)
                             .SingleOrDefault(x => x.Name.Contains("Shifu"));

            var course = instructor.Courses[0];

            course.Title = "The first course of master shifu";
            using (var newContext = new EnrollmentContext())
            {
                newContext.Entry(course).State = EntityState.Modified;
                newContext.SaveChanges();
            }
        }
        static void UpdateInstructorDisconnected(int id)
        {
            var context    = new EnrollmentContext();
            var instructor = context.Instructors
                             .Include(i => i.Courses)
                             .FirstOrDefault(i => i.InstructorId == id);

            instructor.Name = "Master Shifu - The true master";

            using (var newContext = new EnrollmentContext())
            {
                newContext.Instructors.Update(instructor);
                newContext.Courses.RemoveRange(instructor.Courses.OrderBy(x => x.CourseId).Last());
                newContext.SaveChanges();
            }
        }
        static void Enroll_Every_Student_In_Clean_Code_Course()
        {
            using (var context = new EnrollmentContext())
            {
                var students  = context.Students.ToList();
                var cleanCode = context.Courses.Find(4);

                students.ForEach(s =>
                {
                    cleanCode.Enrollments.Add(new Enrollment {
                        StudentId = s.StudentId, CourseId = cleanCode.CourseId
                    });
                });

                context.SaveChanges();
            }
        }
예제 #22
0
        private void Initialize()
        {
            serviceProvider = new ServiceCollection()
                              .AddDbContext <EnrollmentContext>
                              (
                options =>
            {
                options.UseInMemoryDatabase("Enrollment");
                options.UseInternalServiceProvider(new ServiceCollection().AddEntityFrameworkInMemoryDatabase().BuildServiceProvider());
            }
                              ).AddTransient <IEnrollmentStore, EnrollmentStore>().BuildServiceProvider();

            EnrollmentContext context = serviceProvider.GetRequiredService <EnrollmentContext>();

            context.Database.EnsureCreated();

            Task.Run(async() => await Seed_Database(serviceProvider.GetRequiredService <IEnrollmentStore>())).Wait();
        }
        static void InsertRelatedData()
        {
            using (var context = new EnrollmentContext())
            {
                context.Instructors.Add(new Instructor()
                {
                    Name    = "Master Shifu",
                    Courses = new List <Course>
                    {
                        new Course()
                        {
                            Title = "Mastering the troll fu", StartDate = DateTime.Now, EndDate = DateTime.Now
                        }
                    }
                });

                context.SaveChanges();
            }
        }
        static void UpdateInstructorUsingAttach(int id)
        {
            var context    = new EnrollmentContext();
            var instructor = context.Instructors
                             .Include(i => i.Courses)
                             .FirstOrDefault(i => i.InstructorId == id);

            instructor.Name = "Master Shifu - The true master";
            instructor.Courses.Add(new Course()
            {
                Title = "Mastering chop sticks 3", StartDate = DateTime.Now, EndDate = DateTime.Now
            });

            using (var newContext = new EnrollmentContext())
            {
                newContext.Instructors.Attach(instructor);

                newContext.SaveChanges();
            }
        }
        static void Execution_Methods()
        {
            var context = new EnrollmentContext();

            context.Students.ToList();
            context.Students.First();
            context.Students.FirstOrDefault();
            context.Students.Single(s => s.StudentId == 1);
            context.Students.SingleOrDefault(s => s.StudentId == 1);

            // Last() and LastOrDefault() works with OrderBy()
            context.Students.OrderBy(s => s.StudentId).Last();
            context.Students.OrderBy(s => s.StudentId).LastOrDefault();
            context.Students.Find(2);

            /*
             * Aggregate Functions
             * Average(), Sum(), Min(), Max()
             */
        }
        private void StartUp()
        {
            var settings = new EnrollmentAPI.AppSettings()
            {
                Secret = "THIS IS USED TO SIGN AND VERIFY JWT TOKENS, REPLACE IT WITH YOUR OWN SECRET, IT CAN BE ANY STRING"
            };

            IOptions <EnrollmentAPI.AppSettings> appSettingsOptions = Options.Create(settings);

            var optionsBuilder        = new DbContextOptionsBuilder <EnrollmentContext>().UseInMemoryDatabase("client");
            EnrollmentContext context = new EnrollmentContext(optionsBuilder.Options);

            userService = new UserService(appSettingsOptions, context);

            if (userService.GetById(1) == null)
            {
                userService.RegisterUser(new User {
                    Id        = 1,
                    FirstName = "admin",
                    LastName  = "admin",
                    Username  = "******",
                    Password  = "******",
                    Role      = Role.Admin,
                    Token     = null
                });
            }

            if (userService.GetById(2) == null)
            {
                userService.RegisterUser(
                    new User {
                    Id        = 2,
                    FirstName = "test",
                    LastName  = "test",
                    Username  = "******",
                    Password  = "******",
                    Role      = Role.User,
                    Token     = null
                });
            }
        }
        static void Remove_Jack_Sparrow_From_CleanCode()
        {
            using (var context = new EnrollmentContext())
            {
                var student = context.Students
                              .Include("Enrollments")
                              .FirstOrDefault(s => s.StudentId == 4);

                var course = context.Courses
                             .Include("Enrollments")
                             .FirstOrDefault(c => c.CourseId == 4);

                var enrollment = student.Enrollments.FirstOrDefault(x => x.CourseId == course.CourseId);

                if (enrollment != null)
                {
                    course.Enrollments.Remove(enrollment);
                }
                context.SaveChanges();
            }
        }
예제 #28
0
        private void Initialize()
        {
            if (MapperConfiguration == null)
            {
                MapperConfiguration = new MapperConfiguration(cfg =>
                {
                    cfg.AddExpressionMapping();

                    cfg.AddProfile <DescriptorToOperatorMappingProfile>();
                    cfg.AddProfile <EnrollmentProfile>();
                    cfg.AddProfile <ExpansionDescriptorToOperatorMappingProfile>();
                });
            }
            MapperConfiguration.AssertConfigurationIsValid();
            serviceProvider = new ServiceCollection()
                              .AddDbContext <EnrollmentContext>
                              (
                options => options.UseSqlServer
                (
                    @"Server=(localdb)\mssqllocaldb;Database=RequestHelpersTest;ConnectRetryCount=0"
                ),
                ServiceLifetime.Transient
                              )
                              .AddTransient <IEnrollmentStore, EnrollmentStore>()
                              .AddTransient <IEnrollmentRepository, EnrollmentRepository>()
                              .AddSingleton <AutoMapper.IConfigurationProvider>
                              (
                MapperConfiguration
                              )
                              .AddTransient <IMapper>(sp => new Mapper(sp.GetRequiredService <AutoMapper.IConfigurationProvider>(), sp.GetService))
                              .BuildServiceProvider();

            EnrollmentContext context = serviceProvider.GetRequiredService <EnrollmentContext>();

            context.Database.EnsureDeleted();
            context.Database.EnsureCreated();

            DatabaseSeeder.Seed_Database(serviceProvider.GetRequiredService <IEnrollmentRepository>()).Wait();
        }
예제 #29
0
        static void Main(string[] args)
        {
            IConfigurationRoot config = new ConfigurationBuilder()
                                        .SetBasePath(Directory.GetCurrentDirectory())
                                        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                                        .Build();

            IServiceProvider serviceProvider = new ServiceCollection().AddDbContext <EnrollmentContext>(options =>

                                                                                                        options.UseSqlServer(config.GetConnectionString("DefaultConnection")), ServiceLifetime.Transient)
                                               .AddTransient <IEnrollmentStore, EnrollmentStore>()
                                               .AddTransient <IEnrollmentRepository, EnrollmentRepository>()
                                               .AddSingleton <AutoMapper.IConfigurationProvider>(new MapperConfiguration(cfg => cfg.AddMaps(typeof(EnrollmentProfile).GetTypeInfo().Assembly)))
                                               .AddTransient <IMapper>(sp => new Mapper(sp.GetRequiredService <AutoMapper.IConfigurationProvider>(), sp.GetService))
                                               .BuildServiceProvider();

            EnrollmentContext context = serviceProvider.GetRequiredService <EnrollmentContext>();

            context.Database.EnsureCreated();

            Task.Run(async() => await Seed_Database(serviceProvider.GetRequiredService <IEnrollmentRepository>())).Wait();
        }
예제 #30
0
        public static void Initialize(EnrollmentContext context)
        {
            context.Database.EnsureCreated();

            // Look for enrollment.
            if (context.Enrollments.Any())
            {
                return;   // DB has been seeded
            }

            var students = new Student[]
            {
                new Student {
                    StudentID = 1, Age = 23, FirstName = "Lebron", LastName = "James", Mail = "*****@*****.**"
                },
                new Student {
                    StudentID = 2, Age = 25, FirstName = "Pablo", LastName = "Aimar", Mail = "*****@*****.**"
                },
                new Student {
                    StudentID = 3, Age = 27, FirstName = "Pablo", LastName = "Escobar", Mail = "*****@*****.**"
                },
                new Student {
                    StudentID = 4, Age = 29, FirstName = "Estrella", LastName = "Torres", Mail = "*****@*****.**"
                },
                new Student {
                    StudentID = 5, Age = 21, FirstName = "Karen", LastName = "Alga", Mail = "*****@*****.**"
                }
            };

            foreach (Student s in students)
            {
                context.Students.Add(s);
            }
            context.SaveChanges();

            var teachers = new Teacher[]
            {
                new Teacher {
                    TeacherID = 1, Name = "Marcelo", LastName = "Bielsa"
                },
                new Teacher {
                    TeacherID = 2, Name = "Erwe", LastName = "Von Esse"
                },
                new Teacher {
                    TeacherID = 3, Name = "Ruben", LastName = "Aguirre"
                }
            };

            foreach (Teacher t in teachers)
            {
                context.Teachers.Add(t);
            }
            context.SaveChanges();

            var courses = new Course[]
            {
                new Course {
                    CourseID = 1050, Title = "Chemistry", IsOpen = true, MaxPaticipants = 10, TeacherID = 1
                },
                new Course {
                    CourseID = 4022, Title = "Microeconomics", IsOpen = false, MaxPaticipants = 10, TeacherID = 2
                },
                new Course {
                    CourseID = 1045, Title = "Calculus", IsOpen = true, MaxPaticipants = 5, TeacherID = 3
                },
                new Course {
                    CourseID = 3141, Title = "Trigonometry", IsOpen = true, MaxPaticipants = 10, TeacherID = 1
                },
                new Course {
                    CourseID = 2021, Title = "Composition", IsOpen = true, MaxPaticipants = 10, TeacherID = 2
                },
                new Course {
                    CourseID = 2042, Title = "Literature", IsOpen = true, MaxPaticipants = 10, TeacherID = 3
                }
            };

            foreach (Course c in courses)
            {
                context.Courses.Add(c);
            }
            context.SaveChanges();

            var enrollments = new Enrollment[]
            {
                new Enrollment {
                    StudentID = 1, CourseID = 1050
                },
                new Enrollment {
                    StudentID = 1, CourseID = 4022
                },
                new Enrollment {
                    StudentID = 1, CourseID = 1045
                },
                new Enrollment {
                    StudentID = 2, CourseID = 1045
                },
                new Enrollment {
                    StudentID = 2, CourseID = 3141
                },
                new Enrollment {
                    StudentID = 2, CourseID = 2021
                },
                new Enrollment {
                    StudentID = 3, CourseID = 1050
                },
                new Enrollment {
                    StudentID = 3, CourseID = 2042
                },
                new Enrollment {
                    StudentID = 4, CourseID = 4022
                },
                new Enrollment {
                    StudentID = 4, CourseID = 1045
                },
                new Enrollment {
                    StudentID = 5, CourseID = 2021
                },
                new Enrollment {
                    StudentID = 5, CourseID = 3141
                },
            };

            foreach (Enrollment e in enrollments)
            {
                context.Enrollments.Add(e);
            }
            context.SaveChanges();
        }