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)); }
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(); } }
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(); }
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); }
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(); }
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(); }
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."); } } }
/// <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); }
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(); }
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(); } }
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); } }
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); } } } } } }