Example #1
0
        /*
         * FYI,
         *
         * ref: https://blogs.msdn.microsoft.com/marcelolr/2010/07/16/optimistic-and-pessimistic-concurrency-a-simple-explanation/
         */
        public static void OptimisticConcurrency()
        {
            Console.WriteLine("*** OptimisticConcurrency Starts ***");

            Student student = null;

            using (var context = new SchoolDBEntities())
            {
                student = context.Students.First();
            }

            //Edit student name
            student.StudentName = "Robin";

            using (var context = new SchoolDBEntities())
            {
                context.Database.Log = Console.Write;

                try
                {
                    context.Entry(student).State = EntityState.Modified;
                    context.SaveChanges();

                    Console.WriteLine("Student saved successfully.");
                }
                catch (DbUpdateConcurrencyException ex)
                {
                    Console.WriteLine("Concurrency Exception Occurred.");
                }
            }

            Console.WriteLine("*** OptimisticConcurrency Ends ***");
        }
Example #2
0
        public static void ExplicitLoading()
        {
            Console.WriteLine("*** ExplicitLoading Starts ***");

            using (var context = new SchoolDBEntities())
            {
                context.Database.Log = Console.Write;

                Student std = context.Students
                              .Where(s => s.StudentID == 1)
                              .FirstOrDefault <Student>();

                //Loading Standard for Student (seperate SQL query)
                context.Entry(std).Reference(s => s.Standard).Load();

                //Loading Courses for Student (seperate SQL query)
                context.Entry(std).Collection(s => s.Courses).Load();
            }

            Console.WriteLine("*** ExplicitLoading Ends ***");
        }
Example #3
0
        public static void SetEntityState()
        {
            Console.WriteLine("*** SetEntityState Starts ***");

            var student = new Student()
            {
                StudentID   = 1, // root entity with key
                StudentName = "Bill",
                StandardId  = 1,
                Standard    = new Standard() //Child entity (with key value)
                {
                    StandardId   = 1,
                    StandardName = "Grade 1"
                },
                Courses = new List <Course>()
                {
                    new Course()
                    {
                        CourseName = "Machine Language"
                    },                                                //Child entity (empty key)
                    new Course()
                    {
                        CourseId = 2
                    }                             //Child entity (with key value)
                }
            };

            using (var context = new SchoolDBEntities())
            {
                context.Entry(student).State = EntityState.Modified;

                foreach (var entity in context.ChangeTracker.Entries())
                {
                    Console.WriteLine("{0}: {1}", entity.Entity.GetType().Name, entity.State);
                }
            }

            Console.WriteLine("*** SetEntityState Ends ***");
        }
Example #4
0
        public static void EntityEntry()
        {
            Console.WriteLine("*** EntityEntry Starts ***");

            using (var context = new SchoolDBEntities())
            {
                //get student whose StudentId is 1
                var student = context.Students.Find(5);

                //edit student name
                student.StudentName = "Monica";

                //get DbEntityEntry object for student entity object
                var entry = context.Entry(student);

                //get entity information e.g. full name
                Console.WriteLine("Entity Name: {0}", entry.Entity.GetType().FullName);

                //get current EntityState
                Console.WriteLine("Entity State: {0}", entry.State);

                Console.WriteLine("********Property Values********");

                foreach (var propertyName in entry.CurrentValues.PropertyNames)
                {
                    Console.WriteLine("Property Name: {0}", propertyName);

                    //get original value
                    var orgVal = entry.OriginalValues[propertyName];
                    Console.WriteLine("     Original Value: {0}", orgVal);

                    //get current values
                    var curVal = entry.CurrentValues[propertyName];
                    Console.WriteLine("     Current Value: {0}", curVal);
                }
            }

            Console.WriteLine("*** EntityEntryDemo Ends ***");
        }