private static void InsertCatergories()
        {
            using (var context = new DiscussionBoardContext())
            {
                IList<Category> _categories;
                _categories = context
                    .Categories
                    .Where(c =>
                           c.Name == DiscussionCategories.Science
                        || c.Name == DiscussionCategories.Sports
                        || c.Name == DiscussionCategories.Technology
                        || c.Name == DiscussionCategories.Politics
                        || c.Name == DiscussionCategories.Philosophy
                        ).ToList();

                if (_categories.Count > 0)
                {
                    // Do Nothing.
                }
                else
                {
                    // No Records Found - Add Them.
                    IList<Category> categories = _getInitialCategories();
                    foreach (var definedCategory in categories)
                    {
                        context.Database.Log = Console.WriteLine;
                        context.Categories.Add(definedCategory);
                        context.SaveChanges();

                        // To read the Log File in Console in Detail
                        Console.ReadKey();
                    }
                }
            }
        }
        private static void DeleteRandomComment()
        {
            // Fetching a Random Comment
            Comment comment;
            using (var context = new DiscussionBoardContext())
            {
                // Get me a random comment
                comment = context.Comments.FirstOrDefault();
            }

            using (var context = new DiscussionBoardContext())
            {
                context.Database.Log = Console.WriteLine;

                // Note*
                // We need to apprise this Context of the changes we would
                // like to be made in the Database to the
                // fetched Comment Object!

                // Marking the object as Deleted for the Context to
                // take action and fire a Delete Statement for the relevant
                // Comment Object.
                context.Entry(comment).State = EntityState.Deleted;

                // Save the Updated Comment Object
                context.SaveChanges();
                Console.ReadKey();
            }
        }
 private static Boolean CommentsExists()
 {
     IList<Comment> comments;
     using (var context = new DiscussionBoardContext())
     {
         comments = context.Comments.Where(c => c.CommentDetail
             .Contains("The Comment is:")).ToList();
     }
     return (comments.Count > 0);
 }
        private static void GetMembers()
        {
            // Instantiate our Discussion Board Context
            using (var context = new DiscussionBoardContext())
            {
                // Some Notes -
                // 1.
                // Make sure Refernce to DiscussionBoard.DomainClasses Project
                // has been added to this Console Application Project.
                // 2.
                // Execute a simple query to return all Members.
                // 3.
                // ToList() is a LINQ mehtod and also an Executing Method.
                // So the ToList() method will actually trigger the
                // query execution in this case! to return all the Members.
                var members = context.Members.ToList();

                foreach(var singleMember in members)
                {
                    // Print the First Name on Console.
                    Console.WriteLine(singleMember.FirstName);
                }
            }
        }
        private static void UpdateRandomCommentInDisconnectedState()
        {
            // Fetching a Random Comment
            Comment comment;
            using (var context = new DiscussionBoardContext())
            {
                // Get me a random comment
                comment = context.Comments.FirstOrDefault();
            }

            // Update the data now
            // This will mimick us fetching data and passing
            // it to some sort of client - example a Web page
            // for update.

            // Mimicking Update the Web Client will do
            comment.CommentDetail = "Comment Updated by: "+
                "UpdateRandomCommentInDisconnectedState()" +
                    " Method on DateTime" + System.DateTime.Now.ToString();

            // Now, the data HashSet to TransactionalBehavior saved.

            using (var context = new DiscussionBoardContext())
            {
                context.Database.Log = Console.WriteLine;

                // Note* This Context has NO IDEA of what has happened to the
                // above Comment Object - It has no Knowledge that it has been
                // Updated!

                // We need to apprise it of the changes we have made to the
                // Comment Object!

                // Marking the object as Updated/Modified for the Context to
                // take action and fire a Update Statement for the relevant
                // Comment Object.
                context.Entry(comment).State = EntityState.Modified;

                // Save the Updated Comment Object
                context.SaveChanges();
                Console.ReadKey();
            }
        }
        private static void UpdateRandomComment()
        {
            // Fetching a Random Comment
            Comment comment;
            using (var context = new DiscussionBoardContext())
            {
                context.Database.Log = Console.WriteLine;

                // Get me a random comment
                comment = context.Comments.FirstOrDefault();

                // Lets make some changes
                comment.CommentDetail = "Comment Updated by: UpdateRandomComment()" +
                    " Method on DateTime" + System.DateTime.Now.ToString();

                // Save the Updated Comment Object
                context.SaveChanges();
                Console.ReadKey();
            }
        }
 private static Boolean TopicExists()
 {
     Topic topic;
     using (var context = new DiscussionBoardContext())
     {
         topic = context.Topics.Where(t => t.TopicName
             .Contains("Will Mr.Gates ever")).FirstOrDefault();
     }
     return (topic != null);
 }
        private static void RetrievingDataGraphs()
        {
            // Fetch a Topic Record and all related Comments to that Topic

            Topic eagerLoadedTopic;
            using (var context = new DiscussionBoardContext())
            {
                // Example of Eager Loading
                eagerLoadedTopic = context.Topics.Where(t => t.TopicName
                    .Contains("Will Mr.Gates ever"))
                    .Include(t => t.Comments)
                    .FirstOrDefault();
            }

            Topic explicitLoadedTopic;
            using (var context = new DiscussionBoardContext())
            {
                // Example of Explicit Loading
                explicitLoadedTopic = context.Topics.Where(t => t.TopicName
                    .Contains("Will Mr.Gates ever"))
                    .FirstOrDefault();

                // Explicit Loading done here
                context.Entry(explicitLoadedTopic)
                       .Collection(t => t.Comments)
                       .Load();
            }
        }
 private static Boolean MembersExists()
 {
     IList<Member> members;
     using (var context = new DiscussionBoardContext())
     {
         members = context.Members.Where(t => t.FirstName
             .Contains("Member")).ToList();
     }
     return (members.Count > 0);
 }
 private static Boolean InterestsExists()
 {
     IList<Interest> interests;
     using (var context = new DiscussionBoardContext())
     {
         interests = context.Interests.Where(i =>
                 i.InterestName == DiscussionCategories.Science
                 || i.InterestName == DiscussionCategories.Sports
                 || i.InterestName == DiscussionCategories.Technology
                 || i.InterestName == DiscussionCategories.Politics
                 || i.InterestName == DiscussionCategories.Philosophy
                 ).ToList();
     }
     return (interests.Count > 0);
 }
        private static void InsertTopics()
        {
            // Fetching Categories First: Technology and Sports.
            IList<Category> categories;
            using (var context = new DiscussionBoardContext())
            {
                categories = context.Categories
                                    .Where(c =>
                                        c.Name == DiscussionCategories.Technology
                                        || c.Name == DiscussionCategories.Sports)
                                    .ToList();
            }
            // Time to Create a Topic which will fall under The above 2 Categories
            Topic topic = new Topic
            {
                StartDate = System.DateTime.Now,
                IsActive = true,
                TopicName = "Will Mr.Gates ever buy a Basketball Team?"
            };
            foreach (var _category in categories)
            {
                var categoryRec = new Category
                {
                    CategoryId = _category.CategoryId,
                    Name = _category.Name
                };
                topic.Categories.Add(categoryRec);
            }
            // Saving New Topic
            using (var context = new DiscussionBoardContext())
            {
                context.Database.Log = Console.WriteLine;

                // Everything in the Graph will be marked as Added Now!
                // Including the Category Records...
                context.Topics.Add(topic);

                // Marking Category Records as UnChanged - No Insert required!
                foreach (var entry in context.ChangeTracker.Entries<Category>())
                {
                    entry.State = EntityState.Unchanged;
                }

                context.SaveChanges();
                Console.ReadKey();
            }
        }
        private static void InsertMembers()
        {
            IList<Member> members = new List<Member>();
            for (int i=1; i<= 5; i++)
            {
                var member = new Member
                {
                    FirstName = "Member" + i,
                    LastName = "SomeLastName" + i,

                    // BOTS have just been born.. RUN...
                    DateOfBirth = System.DateTime.Now,

                    // Adding ContactDetaiul record on the FLY!...
                    ContactDetail = new ContactDetail
                    {
                        MobilePhone = "MobileNumber" + i,
                        TwitterAlias = "TwitterAlias" + i,
                        Facebook = "Facebook" + i,
                        LinkedIn = "Linkedin" + i
                    }
                };
                members.Add(member);
            }
            // Saving New Members
            using (var context = new DiscussionBoardContext())
            {
                context.Database.Log = Console.WriteLine;

                // Everything in the Graph will be marked as Added Now!
                // Including the ContactDetail Records...
                context.Members.AddRange(members);

                context.SaveChanges();
                Console.ReadKey();
            }
        }
        private static void InsertInterests()
        {
            IList<Interest> interests = new List<Interest>();
            // Fetching Members...
            IList<Member> members;
            using (var context = new DiscussionBoardContext())
            {
                members = context.Members
                                    .Where(m => m.FirstName
                                        .Contains("Member")).ToList();
            }
            // Time to Create Interests for Members
            int enumCounter = 1;
            foreach(var member in members)
            {
                var interest = new Interest
                {
                    // the power of Enums!
                    InterestName = (DiscussionCategories) enumCounter,
                    // Use Foreign Key to indicate this is not a Insert!
                    MemberId = member.MemberId
                };
                enumCounter++;
                interests.Add(interest);
            }
            // Saving New Interests
            using (var context = new DiscussionBoardContext())
            {
                context.Database.Log = Console.WriteLine;

                // Everything in the Graph will be marked as Added Now!
                context.Interests.AddRange(interests);

                context.SaveChanges();
                Console.ReadKey();
            }
        }
        private static void InsertComments()
        {
            IList<Comment> comments = new List<Comment>();
            // Fetching Members...
            IList<Member> members;
            using (var context = new DiscussionBoardContext())
            {
                members = context.Members
                                    .Where(m => m.FirstName
                                        .Contains("Member")).ToList();
            }
            //Fetching Topic
            Topic topic;
            using (var context = new DiscussionBoardContext())
            {
                topic = context.Topics.Where(t => t.TopicName
                    .Contains("Will Mr.Gates ever")).FirstOrDefault();
            }
            // Time to Create Comments for Members
            foreach (var member in members)
            {
                var comment = new Comment
                {
                    CommentDetail = "The Comment is:" +
                         " from: " + member.FirstName + " " + member.LastName,

                    // Use Foreign Key to indicate this is not a Insert!
                    MemberId = member.MemberId,
                    // Use Foreign Key to indicate this is not a Insert!
                    TopicId = topic.TopicId,

                    CreatedDateTime = System.DateTime.Now,
                    NumberOfLikes = 0
                };
                comments.Add(comment);
            }
            // Saving New Comments
            using (var context = new DiscussionBoardContext())
            {
                context.Database.Log = Console.WriteLine;

                // Everything in the Graph will be marked as Added Now!
                context.Comments.AddRange(comments);

                context.SaveChanges();
                Console.ReadKey();
            }
        }