コード例 #1
0
        public ActionResult Create([Bind(Include = "WordID,WordName,WordPositionCol,WordPositionRow,FileId")] Words words)
        {
            if (ModelState.IsValid)
            {
                words.WordID = Guid.NewGuid();
                db.Words.Add(words);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.FileId = new SelectList(db.Files, "FileId", "FileName", words.FileId);
            return(View(words));
        }
コード例 #2
0
        public static void SaveCompiledCustomAssembly(byte[] buffer)
        {
            RemoveExistingCompiledAssemblyFromDb();

            var path = "/" + KompilerEntryPoint.CompiledAssemblyName + ".dll";

            using (var ctx = new DbFileContext())
            {
                var root = ctx.DbFiles.Include(x => x.Children).First(x => x.IsDirectory && x.ParentId == null && x.Name == null && x.VirtualPath.Equals("/", StringComparison.InvariantCultureIgnoreCase));

                var file = new DbFile
                {
                    ParentId    = root.Id,
                    IsDirectory = false,
                    Name        = KompilerEntryPoint.CompiledAssemblyName,
                    Extension   = ".dll",
                    IsBinary    = true,
                    VirtualPath = path,
                    Bytes       = buffer
                };

                ctx.DbFiles.Add(file);
                ctx.SaveChanges();
            }
        }
コード例 #3
0
        public static void AddFilesData(string filepath, Files f)
        {
            FileData fd = new FileData();

            byte[] filedata;
            fd.Files = f;
            using (var stream = new System.IO.FileStream(filepath, System.IO.FileMode.Open, System.IO.FileAccess.Read))
            {
                using (var reader = new System.IO.BinaryReader(stream))
                {
                    filedata = reader.ReadBytes((int)stream.Length);
                }
                fd.FileData1 = filedata;
                db.FileData.Add(fd);
            }
            db.SaveChanges();
        }
コード例 #4
0
        protected bool Open(string dirPath)
        {
            Contract.Requires(_db != null);

            _dir = _db.DirectorySet.SingleOrDefault(obj => obj.Name.Equals(dirPath));
            if (_dir == null)
            {
                _dir      = new DbDirectory();
                _dir.Name = dirPath;

                _db.DirectorySet.Add(_dir);
                _db.SaveChanges();
            }

            interalLockFactory = new EFDbLockFactory(_db, _dbGuid, dirPath);
            isOpen             = (_dir != null);
            return(isOpen);
        }
コード例 #5
0
        public void OpenOrCreate(string fileName, long buffer_size = kDefaultBufferSize)
        {
            var file = _dir.FileSet.SingleOrDefault(obj => obj.FileName.Equals(fileName));

            if (file == null)
            {
                file             = new DbFileInfo();
                file.FileName    = fileName;
                file.DirectoryId = _dir.Id;
                file.BufferSize  = buffer_size;

                _dir.FileSet.Add(file);
                _db.FileSet.Add(file);
                _db.SaveChanges();
            }

            _file = file;
            ResetProperties();
        }
コード例 #6
0
ファイル: EFDbLock.cs プロジェクト: ToroLiu/TTLuceneDbStore
        public override void ClearLock(string lockName)
        {
            DbLuceneLock dbLock = _db.LuceneLockSet.SingleOrDefault(obj => obj.LockName.Equals(lockName) && obj.LockSource.Equals(_srcGuid));

            if (dbLock == null)
            {
                return;
            }

            _db.LuceneLockSet.Remove(dbLock);
            _db.SaveChanges();
        }
コード例 #7
0
 public static void RemoveExistingCompiledAssemblyFromDb()
 {
     using (var ctx = new DbFileContext())
     {
         var path         = "/" + KompilerEntryPoint.CompiledAssemblyName + ".dll";
         var existingFile = ctx.DbFiles.FirstOrDefault(x => x.VirtualPath.Equals(path, StringComparison.InvariantCultureIgnoreCase));
         if (existingFile != null)
         {
             ctx.DbFiles.Remove(existingFile);
             ctx.SaveChanges();
             Trace.TraceInformation("[Kompiler]: Compiled Assembly Found and removed.");
         }
     }
 }
コード例 #8
0
ファイル: EFDbLock.cs プロジェクト: ToroLiu/TTLuceneDbStore
        /// <summary>
        /// DbLuceneLock啟用Optimistic Locking的機制。如果該lock object有多個人修改,會造成Exception。以此處理concurrency的問題。
        /// </summary>
        /// <returns></returns>
        public override bool Obtain()
        {
            DbLuceneLock dbLock = _db.LuceneLockSet.SingleOrDefault(obj => obj.LockName.Equals(_lockName));

            if (dbLock != null && CheckTimeout(dbLock) == false)
            {
                return(false);
            }

            if (dbLock == null)
            {
                dbLock               = new DbLuceneLock(_lockName);
                dbLock.LockSource    = _srcGuid;
                dbLock.ExpireTimeUTC = DateTime.UtcNow.Add(_expireOffset);
                _db.LuceneLockSet.Add(dbLock);
                _db.SaveChanges();
                return(true);
            }

            dbLock.LockSource    = _srcGuid;
            dbLock.ExpireTimeUTC = DateTime.UtcNow.Add(_expireOffset);
            _db.SaveChanges();
            return(true);
        }
コード例 #9
0
        public void RunLoop()
        {
            var dbContext = new DbFileContext();

            var sw = Stopwatch.StartNew();

            for (int i = 0; i < 1000; i++)
            {
                int i1 = i;
                Console.Write(i1);
                dbContext.SaveChanges();
            }

            Console.WriteLine("took {0}", sw.Elapsed.ToString("g"));
            Console.ReadLine();
        }
コード例 #10
0
        public void TestDBSchema()
        {
            Guid guid = Guid.NewGuid();

            using (DbFileContext db = new DbFileContext()) {
                DbDirectory dir = new DbDirectory()
                {
                    Name = "a_dir_" + guid.ToString(),
                };
                db.DirectorySet.Add(dir);

                DbFileInfo file = new DbFileInfo("a_file");
                dir.FileSet.Add(file);

                DbFileBlock block = new DbFileBlock(100);
                byte[]      bytes = Encoding.UTF8.GetBytes("Hello World");
                Array.Copy(bytes, block.RawData, bytes.Length);
                file.BlockSet.Add(block);

                db.SaveChanges();
            }
        }
コード例 #11
0
        public static void WriteFilesToDatabase(DbFileContext ctx, Uri initialUri, DirectoryInfo root, int?id)
        {
            string virtualPath;
            string dirName;

            if (id == null)
            {
                virtualPath = "/";
                dirName     = null;
            }
            else
            {
                var currentUri   = new Uri(root.FullName);
                var tempRelative = initialUri.MakeRelativeUri(currentUri).ToString();
                var iof          = tempRelative.IndexOf('/');
                virtualPath = tempRelative.Substring(iof);

                dirName = root.Name;
            }

            foreach (var ignoredDirectory in IgnoredDirectories)
            {
                if (virtualPath.StartsWith(ignoredDirectory, StringComparison.OrdinalIgnoreCase))
                {
                    return;
                }
            }

            var dbFile = new DbFile
            {
                IsDirectory = true,
                Name        = dirName,
                VirtualPath = virtualPath,
                ParentId    = id
            };

            ctx.DbFiles.Add(dbFile);
            ctx.SaveChanges();

            foreach (var fi in root.EnumerateFiles())
            {
                bool ignore = IgnoredExtensions.Any(ignoredExtension => fi.Extension.StartsWith(ignoredExtension)) ||
                              IgnoredFiles.Any(x => x.Equals(fi.Name, StringComparison.OrdinalIgnoreCase));

                if (ignore)
                {
                    continue;
                }

                Console.WriteLine(fi.FullName);

                var dbFileFolder = new DbFile
                {
                    IsDirectory = false,
                    Name        = Path.GetFileNameWithoutExtension(fi.Name),
                    Extension   = fi.Extension,
                    VirtualPath = Path.Combine(virtualPath, fi.Name).Replace('\\', '/'),
                    ParentId    = dbFile.Id,
                };

                if (IsTextFile(fi.Extension))
                {
                    var text = File.ReadAllText(fi.FullName, Encoding.UTF8);
                    dbFileFolder.Texto = text;
                }
                else
                {
                    var bytes = File.ReadAllBytes(fi.FullName);
                    dbFileFolder.Bytes    = bytes;
                    dbFileFolder.IsBinary = true;
                }

                ctx.DbFiles.Add(dbFileFolder);
                ctx.SaveChanges();
            }

            foreach (var di in root.EnumerateDirectories())
            {
                WriteFilesToDatabase(ctx, initialUri, di, dbFile.Id);
            }
        }
コード例 #12
0
        private static void ExecutePlugin(Assembly assembly, bool force = false)
        {
            if (!BootstrapperSection.Instance.PluginLoader.Enabled && !force)
            {
                return;
            }

            var plugins = assembly.GetExportedTypes().Where(x => typeof(IPlugin).IsAssignableFrom(x) && x.IsClass && !x.IsAbstract);

            foreach (var plugin in plugins)
            {
                if (_executedPlugins.Contains(plugin.AssemblyQualifiedName))
                {
                    continue;
                }

                _executedPlugins.Add(plugin.AssemblyQualifiedName);

                Trace.TraceInformation("[PluginLoader]: Found implementation of IPlugin '{0}'", plugin.FullName);
                IPlugin instance = null;
                using (DisposableTimer.StartNew(plugin.FullName))
                {
                    try
                    {
                        instance = Activator.CreateInstance(plugin) as IPlugin;
                    }
                    catch (Exception ex)
                    {
                        Trace.TraceError("[PluginLoader]:Error activating instance of type '{0}'. {1}", plugin,
                                         ex.Message);
                    }
                    finally
                    {
                        if (instance != null)
                        {
                            //verifica se o plugin está instalado
                            using (var ctx = new DbFileContext())
                            {
                                var module = ctx.DbModules.FirstOrDefault(
                                    x => x.Name.Equals(instance.PluginName, StringComparison.OrdinalIgnoreCase));

                                if (module == null)
                                {
                                    module      = new DbModule();
                                    module.Name = instance.PluginName;
                                    ctx.DbModules.Add(module);
                                    ctx.SaveChanges();
                                }

                                if (!module.Status)
                                {
                                    //instalar
                                    using (DisposableTimer.StartNew("Installing {0}".Fmt(module.Name)))
                                    {
                                        try
                                        {
                                            instance.Install();
                                            module.Status = true;
                                            ctx.SaveChanges();
                                        }
                                        catch (Exception ex)
                                        {
                                            Trace.TraceError(ex.ToString());
                                        }
                                    }
                                }
                            }
                            Trace.TraceInformation("[PluginLoader]: Trying to Execute Plugin: {0}", instance.PluginName);
                            try
                            {
                                instance.Start();
                                Trace.TraceInformation("[PluginLoader]: SUCCESS Executing Plugin: {0}", instance.PluginName);
                            }
                            catch (Exception ex)
                            {
                                Trace.TraceError(ex.Message);
                            }
                        }
                    }
                }
            }
        }