public void RemoveUserRoom(ChatUser user, ChatRoom room)
        {
            RunNonLazy(() =>
            {
                // The hack from hell to attach the user to room.Users so delete is tracked
                ObjectContext context      = ((IObjectContextAdapter)_db).ObjectContext;
                RelationshipManager manger = context.ObjectStateManager.GetRelationshipManager(room);
                IRelatedEnd end            = manger.GetRelatedEnd("JabbR.Models.ChatRoom_Users", "ChatRoom_Users_Target");
                end.Attach(user);

                room.Users.Remove(user);
            });
        }
        public static void RemoveReferenceFromCollection(
            this ObjectContext oc,
            object target,
            string propertyName,
            object toBeRemoved)
        {
            EntityType entityType = oc.MetadataWorkspace.GetItem <EntityType>(
                target.GetType().FullName,
                DataSpace.CSpace);
            NavigationProperty navProperty = entityType.NavigationProperties[propertyName];
            ObjectStateEntry   entry       = oc.ObjectStateManager.GetObjectStateEntry(target);
            IRelatedEnd        relatedEnd  = entry.RelationshipManager
                                             .GetRelatedEnd(navProperty.RelationshipType.Name, navProperty.ToEndMember.Name);

            relatedEnd.Attach(toBeRemoved);
            relatedEnd.Remove(toBeRemoved);
        }