public File Save(Guid scheduleItemID, File file)
        {
            oxite_File fileToSave = null;
            oxite_Conferences_ScheduleItemFileRelationship scheduleItemFile;

            if (file.ID != Guid.Empty)
            {
                fileToSave = context.oxite_Files.FirstOrDefault(f => f.FileID == file.ID);
            }

            if (fileToSave == null)
            {
                context.oxite_Files.InsertOnSubmit(fileToSave = new oxite_File {
                    FileID = file.ID != Guid.Empty ? file.ID : Guid.NewGuid()
                });

                scheduleItemFile = new oxite_Conferences_ScheduleItemFileRelationship()
                {
                    ScheduleItemID = scheduleItemID, FileID = fileToSave.FileID
                };
            }
            else
            {
                scheduleItemFile = context.oxite_Conferences_ScheduleItemFileRelationships.FirstOrDefault(pfr => pfr.FileID == fileToSave.FileID);

                if (scheduleItemFile != null && scheduleItemFile.ScheduleItemID != scheduleItemID)
                {
                    context.oxite_Conferences_ScheduleItemFileRelationships.DeleteOnSubmit(scheduleItemFile);
                    scheduleItemFile = new oxite_Conferences_ScheduleItemFileRelationship()
                    {
                        ScheduleItemID = scheduleItemID, FileID = fileToSave.FileID
                    };
                }
                else
                {
                    scheduleItemFile = null;
                }
            }

            if (scheduleItemFile != null)
            {
                context.oxite_Conferences_ScheduleItemFileRelationships.InsertOnSubmit(scheduleItemFile);
            }

            fileToSave.Length   = file.SizeInBytes;
            fileToSave.MimeType = file.MimeType;
            fileToSave.TypeName = file.TypeName;
            fileToSave.Url      = file.Url.ToString();

            context.SubmitChanges();

            return(projectFile(fileToSave));
        }
        public bool Remove(Guid scheduleItemID, Guid fileID)
        {
            bool       removedFile = false;
            oxite_File foundFile   = context.oxite_Files.FirstOrDefault(f => f.FileID == fileID);

            if (foundFile != null)
            {
                oxite_Conferences_ScheduleItemFileRelationship foundScheduleItemFile = context.oxite_Conferences_ScheduleItemFileRelationships.FirstOrDefault(sifr => sifr.ScheduleItemID == scheduleItemID && sifr.FileID == fileID);

                if (foundScheduleItemFile != null)
                {
                    context.oxite_Files.DeleteOnSubmit(foundFile);

                    context.SubmitChanges();

                    removedFile = true;
                }
            }

            return(removedFile);
        }