示例#1
0
        public static bool InsertUpdateEntity <T>(T entity)  where T : class
        {
            bool result = false;

            using (var context = new HWContext())
            {
                var saved = false;
                while (!saved)
                {
                    try
                    {
                        var entType = entity.GetType();
                        int id      = (int)entType.GetProperty("ID").GetValue(entity);

                        if (id == 0)
                        {
                            context.Set <T>().Add(entity);
                        }
                        else
                        {
                            context.Entry <T>(entity).State = System.Data.Entity.EntityState.Modified;
                        }

                        context.SaveChanges();
                        saved = true;
                    }
                    catch (DbUpdateConcurrencyException ex)
                    {
                        foreach (var entry in ex.Entries)
                        {
                            if (entry.Entity is T)
                            {
                                var proposedValues = entry.CurrentValues;
                                var databaseValues = entry.GetDatabaseValues();

                                foreach (var property in proposedValues.PropertyNames)
                                {
                                    var proposedValue = proposedValues[property];
                                    var databaseValue = databaseValues[property];

                                    // TODO: decide which value should be written to database
                                    proposedValues[property] = databaseValue;
                                }

                                // Refresh original values to bypass next concurrency check
                                entry.OriginalValues.SetValues(databaseValues);
                            }
                            else
                            {
                                throw new NotSupportedException(
                                          "Неможливо опрацювати конфлікт даних "
                                          + entry);
                            }
                        }
                    }
                }
            }
            return(result);
        }
示例#2
0
 public XtdModelFileBundle(IFileHierarchyFile xtdFile,
                           IFileHierarchyFile xttFile,
                           HWContext context)
 {
     this.XtdFile = xtdFile;
     this.XttFile = xttFile;
     this.Context = context;
 }
示例#3
0
        public IModelDirectory <IHaloWarsModelFileBundle>?GatherModelFileBundles(
            bool assert)
        {
            var haloWarsSteamDirectory =
                SteamUtils.GetGameDirectory("HaloWarsDE", assert);

            if (haloWarsSteamDirectory == null)
            {
                return(null);
            }

            var scratchDirectory = DirectoryConstants.ROMS_DIRECTORY
                                   .GetSubdir("halo_wars", true);

            var context = new HWContext(haloWarsSteamDirectory.FullName,
                                        scratchDirectory.FullName);

            // Expand all compressed/encrypted game files. This also handles the .xmb -> .xml conversion
            context.ExpandAllEraFiles();

            var fileHierarchy = new FileHierarchy(scratchDirectory);

            var rootNode = new ModelDirectory <IHaloWarsModelFileBundle>("halo_wars");

            var mapDirectories =
                fileHierarchy.Root
                .TryToGetSubdir("scenario/skirmish/design")
                .Subdirs;

            foreach (var srcMapDirectory in mapDirectories)
            {
                var xtdFile = srcMapDirectory.FilesWithExtension(".xtd").Single();
                var xttFile = srcMapDirectory.FilesWithExtension(".xtt").Single();
                rootNode.AddFileBundleRelative(
                    new XtdModelFileBundle(xtdFile, xttFile, context));
            }

            var artDirectory   = fileHierarchy.Root.TryToGetSubdir("art");
            var artSubdirQueue = new FinQueue <IFileHierarchyDirectory>(artDirectory);

            // TODO: Switch to DFS instead, it's more intuitive as a user
            while (artSubdirQueue.TryDequeue(out var artSubdir))
            {
                // TODO: Skip a file if it's already been extracted
                // TODO: Parse UGX files instead, as long as they specify their own animations
                var visFiles = artSubdir.FilesWithExtension(".vis");
                foreach (var visFile in visFiles)
                {
                    rootNode.AddFileBundleRelative(new VisModelFileBundle(visFile, context));
                }

                artSubdirQueue.Enqueue(artSubdir.Subdirs);
            }

            return(rootNode);
        }
        public HelloService(HWContext context)
        {
            //temp until db connection established
            context.Worlds.Add(new World {
                Name = "World"
            });

            _context = context;
            _context.SaveChanges();
        }
示例#5
0
        public static List <EnumValue> GetValueList(int typeCode)
        {
            List <EnumValue> result = null;

            using (var db = new HWContext())
            {
                result = db.EnumValues.Where(x => x.EnumTypeID == typeCode).ToList();
            }

            return(result);
        }
示例#6
0
        public static List <T> GetLookUpList <T>() where T : class
        {
            List <T> result = null;

            using (var context = new HWContext())
            {
                context.Set <T>().Load();
                result = context.Set <T>().Local.ToList();
            }

            return(result);
        }
示例#7
0
 public static void DeleteEntity(ContactInfo entity)
 {
     using (var context = new HWContext())
     {
         try
         {
             context.ContactInfo.Remove(entity);
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.Message);
         }
     }
 }
        private void RefreshTimeTable(int id = 0)
        {
            using (var context = new HWContext())
            {
                context.TimeTable.Include(x => x.Subject).Load();

                List <HWDBase.Repository.TimeTableStruct> listItems = new List <HWDBase.Repository.TimeTableStruct>();

                for (byte i = 1; i < 10; i++)
                {
                    HWDBase.Repository.TimeTableStruct item = new HWDBase.Repository.TimeTableStruct();
                    item.LessonNumber = i;
                    for (int n = 0; n < 6; n++)
                    {
                        var entity = context.TimeTable.Local.Where(x => x.DayOfWeek == n && x.LessonNumber == i).FirstOrDefault();

                        switch (n)
                        {
                        case 1:
                            item.D1 = entity.Subject;
                            break;

                        case 2:
                            item.D2 = entity.Subject;
                            break;

                        case 3:
                            item.D3 = entity.Subject;
                            break;

                        case 4:
                            item.D4 = entity.Subject;
                            break;

                        case 5:
                            item.D5 = entity.Subject;
                            break;

                        default:
                            break;
                        }
                    }

                    listItems.Add(item);
                }

                TimeTableItems = CollectionViewSource.GetDefaultView(listItems);
            }
        }
 public ContactInfoEditViewModel(int owner, int id = 0)
 {
     if (id == 0)
     {
         Entity          = new ContactInfo();
         Entity.PersonID = owner;
     }
     else
     {
         using (var context = new HWContext())
         {
             Entity = context.Set <ContactInfo>().Where(w => w.ID == id).FirstOrDefault();
         }
     }
 }
示例#10
0
        private void RefreshView()
        {
            HWListView.Items.Clear();
            hwContext = hwController.GetDbContext();
            var hardwareInfos = hwContext.HWEntities.AsEnumerable();

            foreach (HWEntity hardwareInfo in hardwareInfos)
            {
                ListViewItem listViewItem = new ListViewItem();
                listViewItem.Text = hardwareInfo.HWID.ToString();
                listViewItem.SubItems.Add(hardwareInfo.Hardware_Name);
                listViewItem.SubItems.Add(hardwareInfo.Hardware_Brand);
                listViewItem.SubItems.Add(hardwareInfo.Hardware_Model);
                listViewItem.SubItems.Add(hardwareInfo.Hardware_Type);
                listViewItem.SubItems.Add(hardwareInfo.Hardware_Status);
                listViewItem.SubItems.Add(hardwareInfo.Hardware_Price.ToString());

                HWListView.Items.Add(listViewItem);
            }
        }
示例#11
0
 public static new HWSc3Resource FromFile(HWContext context, string filename)
 {
     return(GetOrCreateFromFile(context, filename, HWResourceType.Sc3) as HWSc3Resource);
 }
示例#12
0
 public HWController(CSharpHWForm cSharpHWForm)
 {
     this.cSharpHWForm = cSharpHWForm;
     db = new HWContext();
 }
 public VisModelFileBundle(IFileHierarchyFile visFile, HWContext context)
 {
     this.VisFile = visFile;
     this.Context = context;
 }
示例#14
0
 public DBLogger(IConfiguration configuration)
 {
     _configuration = configuration;
     _HWContext     = new HWContext(_configuration);
 }