Browse Source

完成SQLite按条件删除数据操作,添加新项目(旨在记录软件问题反馈)

yuzhengyang 8 years ago
parent
commit
e3a480872f
45 changed files with 103899 additions and 81 deletions
  1. 11 0
      Fork.Net/Fork.Net.sln
  2. 26 0
      Fork.Net/Oreo.Plugins/Oreo.FaultLog/App.config
  3. 15 0
      Fork.Net/Oreo.Plugins/Oreo.FaultLog/DatabaseEngine/Mapping.cs
  4. 178 0
      Fork.Net/Oreo.Plugins/Oreo.FaultLog/DatabaseEngine/Muse.cs
  5. 34 0
      Fork.Net/Oreo.Plugins/Oreo.FaultLog/DatabaseEngine/SuperDb.cs
  6. 20 0
      Fork.Net/Oreo.Plugins/Oreo.FaultLog/Models/FaultLogs.cs
  7. 135 0
      Fork.Net/Oreo.Plugins/Oreo.FaultLog/Oreo.FaultLog.csproj
  8. 22 0
      Fork.Net/Oreo.Plugins/Oreo.FaultLog/Program.cs
  9. 36 0
      Fork.Net/Oreo.Plugins/Oreo.FaultLog/Properties/AssemblyInfo.cs
  10. 71 0
      Fork.Net/Oreo.Plugins/Oreo.FaultLog/Properties/Resources.Designer.cs
  11. 117 0
      Fork.Net/Oreo.Plugins/Oreo.FaultLog/Properties/Resources.resx
  12. 30 0
      Fork.Net/Oreo.Plugins/Oreo.FaultLog/Properties/Settings.Designer.cs
  13. 7 0
      Fork.Net/Oreo.Plugins/Oreo.FaultLog/Properties/Settings.settings
  14. 273 0
      Fork.Net/Oreo.Plugins/Oreo.FaultLog/Views/MainForm.Designer.cs
  15. 20 0
      Fork.Net/Oreo.Plugins/Oreo.FaultLog/Views/MainForm.cs
  16. 120 0
      Fork.Net/Oreo.Plugins/Oreo.FaultLog/Views/MainForm.resx
  17. 9 0
      Fork.Net/Oreo.Plugins/Oreo.FaultLog/packages.config
  18. 17 17
      Fork.Net/Oreo.Plugins/Oreo.FileMan/DatabaseEngine/Muse.cs
  19. 52 16
      Fork.Net/Oreo.Plugins/Oreo.FileMan/Partial/FileBackupPartial.Designer.cs
  20. 15 1
      Fork.Net/Oreo.Plugins/Oreo.FileMan/Partial/FileBackupPartial.cs
  21. 25 28
      Fork.Net/Oreo.Plugins/Oreo.FileMan/Partial/FileTypePartial.cs
  22. 2 2
      Fork.Net/Oreo.Plugins/Oreo.FileMan/Properties/AssemblyInfo.cs
  23. 53 13
      Fork.Net/Oreo.Plugins/Oreo.FileMan/Views/MainForm.Designer.cs
  24. 33 4
      Fork.Net/Oreo.Plugins/Oreo.FileMan/Views/MainForm.cs
  25. 3 0
      Fork.Net/Oreo.Plugins/Oreo.FileMan/Views/MainForm.resx
  26. 11 0
      Fork.Net/Y.Utils/AppUtils/PermissionTool.cs
  27. BIN
      Fork.Net/packages/EntityFramework.6.1.0/EntityFramework.6.1.0.nupkg
  28. 5 0
      Fork.Net/packages/EntityFramework.6.1.0/content/App.config.transform
  29. 5 0
      Fork.Net/packages/EntityFramework.6.1.0/content/Web.config.transform
  30. BIN
      Fork.Net/packages/EntityFramework.6.1.0/lib/net40/EntityFramework.SqlServer.dll
  31. 1858 0
      Fork.Net/packages/EntityFramework.6.1.0/lib/net40/EntityFramework.SqlServer.xml
  32. BIN
      Fork.Net/packages/EntityFramework.6.1.0/lib/net40/EntityFramework.dll
  33. 45071 0
      Fork.Net/packages/EntityFramework.6.1.0/lib/net40/EntityFramework.xml
  34. BIN
      Fork.Net/packages/EntityFramework.6.1.0/lib/net45/EntityFramework.SqlServer.dll
  35. 1858 0
      Fork.Net/packages/EntityFramework.6.1.0/lib/net45/EntityFramework.SqlServer.xml
  36. BIN
      Fork.Net/packages/EntityFramework.6.1.0/lib/net45/EntityFramework.dll
  37. 52245 0
      Fork.Net/packages/EntityFramework.6.1.0/lib/net45/EntityFramework.xml
  38. BIN
      Fork.Net/packages/EntityFramework.6.1.0/tools/EntityFramework.PowerShell.Utility.dll
  39. BIN
      Fork.Net/packages/EntityFramework.6.1.0/tools/EntityFramework.PowerShell.dll
  40. BIN
      Fork.Net/packages/EntityFramework.6.1.0/tools/EntityFramework.psd1
  41. 1167 0
      Fork.Net/packages/EntityFramework.6.1.0/tools/EntityFramework.psm1
  42. 48 0
      Fork.Net/packages/EntityFramework.6.1.0/tools/about_EntityFramework.help.txt
  43. 154 0
      Fork.Net/packages/EntityFramework.6.1.0/tools/init.ps1
  44. 153 0
      Fork.Net/packages/EntityFramework.6.1.0/tools/install.ps1
  45. BIN
      Fork.Net/packages/EntityFramework.6.1.0/tools/migrate.exe

+ 11 - 0
Fork.Net/Fork.Net.sln

@@ -57,6 +57,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Fork.Net.SpeciallyTools", "
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Y.FileQueryEngine", "Fork.Net.SpeciallyTools\Y.FileQueryEngine\Y.FileQueryEngine.csproj", "{497F570C-8398-458D-970C-DFA3DD9FE746}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Oreo.FaultLog", "Oreo.Plugins\Oreo.FaultLog\Oreo.FaultLog.csproj", "{90C5C3EC-FE0F-46CA-9388-17E9C8AD7B6C}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -233,6 +235,14 @@ Global
 		{497F570C-8398-458D-970C-DFA3DD9FE746}.Release|Any CPU.Build.0 = Release|Any CPU
 		{497F570C-8398-458D-970C-DFA3DD9FE746}.Release|x86.ActiveCfg = Release|Any CPU
 		{497F570C-8398-458D-970C-DFA3DD9FE746}.Release|x86.Build.0 = Release|Any CPU
+		{90C5C3EC-FE0F-46CA-9388-17E9C8AD7B6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{90C5C3EC-FE0F-46CA-9388-17E9C8AD7B6C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{90C5C3EC-FE0F-46CA-9388-17E9C8AD7B6C}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{90C5C3EC-FE0F-46CA-9388-17E9C8AD7B6C}.Debug|x86.Build.0 = Debug|Any CPU
+		{90C5C3EC-FE0F-46CA-9388-17E9C8AD7B6C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{90C5C3EC-FE0F-46CA-9388-17E9C8AD7B6C}.Release|Any CPU.Build.0 = Release|Any CPU
+		{90C5C3EC-FE0F-46CA-9388-17E9C8AD7B6C}.Release|x86.ActiveCfg = Release|Any CPU
+		{90C5C3EC-FE0F-46CA-9388-17E9C8AD7B6C}.Release|x86.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -258,5 +268,6 @@ Global
 		{9B9BF25E-0ECD-4923-9546-4FDAEF685092} = {A89FC45A-A907-4487-8719-114530A62684}
 		{E1897235-0E04-420D-B6D5-29BEA14DA1FD} = {A89FC45A-A907-4487-8719-114530A62684}
 		{497F570C-8398-458D-970C-DFA3DD9FE746} = {FA0F1046-E0E8-4057-B4B4-CD551844A29B}
+		{90C5C3EC-FE0F-46CA-9388-17E9C8AD7B6C} = {E53B3662-A5FD-4D4C-AFF6-1DC9FF24EA16}
 	EndGlobalSection
 EndGlobal

+ 26 - 0
Fork.Net/Oreo.Plugins/Oreo.FaultLog/App.config

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+  <configSections>
+    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
+    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
+  </configSections>
+  <entityFramework>
+    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
+      <parameters>
+        <parameter value="v13.0" />
+      </parameters>
+    </defaultConnectionFactory>
+    <providers>
+      <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
+      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
+    </providers>
+  </entityFramework>
+  <system.data>
+    <DbProviderFactories>
+      <remove invariant="System.Data.SQLite.EF6" />
+      <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
+      <remove invariant="System.Data.SQLite" />
+      <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
+    </DbProviderFactories>
+  </system.data>
+</configuration>

+ 15 - 0
Fork.Net/Oreo.Plugins/Oreo.FaultLog/DatabaseEngine/Mapping.cs

@@ -0,0 +1,15 @@
+using Oreo.FaultLog.Models;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Data.Entity.Infrastructure.Annotations;
+using System.Data.Entity.ModelConfiguration;
+
+namespace Oreo.FaultLog.DatabaseEngine
+{
+    public class FaultLogsMap : EntityTypeConfiguration<FaultLogs>
+    {
+        public FaultLogsMap()
+        {
+            this.Property(o => o.Id).HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute() { IsUnique = true }));
+        }
+    }
+}

+ 178 - 0
Fork.Net/Oreo.Plugins/Oreo.FaultLog/DatabaseEngine/Muse.cs

@@ -0,0 +1,178 @@
+using System;
+using System.Collections.Generic;
+using System.Data.Entity;
+using System.Data.Entity.Infrastructure;
+using System.Linq;
+using System.Linq.Expressions;
+
+namespace Oreo.FaultLog.DatabaseEngine
+{
+    class Muse : IDisposable
+    {
+        public SuperDb Context;
+        public Muse()
+        {
+            Context = new SuperDb();
+        }
+
+        public int Add<T>(T EntityObj, bool isSave = true) where T : class
+        {
+            try
+            {
+                this.Context.Set<T>().Add(EntityObj);
+                if (isSave)
+                {
+                    return Save();
+                }
+            }
+            catch (Exception e) { }
+            return 0;
+        }
+        public int Adds<T>(IEnumerable<T> EntityObjs) where T : class
+        {
+            try
+            {
+                Context.Set<T>().AddRange(EntityObjs);
+                return Save();
+            }
+            catch (Exception e)
+            {
+                return 0;
+            }
+        }
+        public int Del<T>(T EntityObj, bool isSave) where T : class
+        {
+            try
+            {
+                this.Context.Set<T>().Remove(EntityObj);
+                if (isSave)
+                {
+                    return Save();
+                }
+            }
+            catch (Exception e) { }
+            return 0;
+        }
+        public int Dels<T>(IEnumerable<T> EntityObjs) where T : class
+        {
+            try
+            {
+                this.Context.Set<T>().RemoveRange(EntityObjs);
+                return Save();
+            }
+            catch (Exception e) { }
+            return 0;
+        }
+        public int Update<T>(T EntityObj, bool isSave) where T : class
+        {
+            try
+            {
+                this.Context.Entry(EntityObj).State = EntityState.Modified;
+                if (isSave)
+                {
+                    return Save();
+                }
+            }
+            catch (Exception e) { }
+            return 0;
+        }
+        public int Save()
+        {
+            return Context.SaveChanges();
+        }
+
+        public T Get<T>(Expression<Func<T, bool>> expression, string[] include) where T : class
+        {
+            try
+            {
+                if (include != null && include.Count() > 0)
+                {
+                    DbQuery<T> query = GetInclude<T>(include);
+                    if (query != null)
+                        return query.FirstOrDefault(expression);
+                }
+                return this.Context.Set<T>().FirstOrDefault(expression);
+            }
+            catch (Exception e)
+            {
+            }
+            return null;
+        }
+        public IEnumerable<T> Gets<T>(Expression<Func<T, bool>> expression, string[] include) where T : class
+        {
+            try
+            {
+                if (include != null && include.Count() > 0)
+                {
+                    DbQuery<T> query = GetInclude<T>(include);
+                    if (query != null)
+                        return query.Where(expression).ToList();
+                }
+            }
+            catch (Exception)
+            {
+                throw;
+            }
+            return Context.Set<T>().Where(expression).ToList();
+        }
+        public IEnumerable<T> GetAll<T>(string[] include, bool track) where T : class
+        {
+            if (include != null && include.Count() > 0)
+            {
+                DbQuery<T> query = GetInclude<T>(include);
+                if (query != null)
+                    if (track)
+                        return query.ToList();
+                    else
+                        return query.AsNoTracking().ToList();
+            }
+            if (!track)
+                Context.Set<T>().AsNoTracking().ToList();
+            return Context.Set<T>().ToList();
+        }
+        private DbQuery<T> GetInclude<T>(string[] include) where T : class
+        {
+            DbQuery<T> searchCondition = null;
+            foreach (var item in include)
+            {
+                if (searchCondition == null)
+                    searchCondition = this.Context.Set<T>().Include(item);
+                else
+                    searchCondition = searchCondition.Include(item);
+            }
+            return searchCondition;
+        }
+
+        public bool Any<T>(Expression<Func<T, bool>> expression, string[] include) where T : class
+        {
+            try
+            {
+                if (include != null && include.Count() > 0)
+                {
+                    DbQuery<T> query = GetInclude<T>(include);
+                    if (query != null)
+                        return query.Any(expression);
+                }
+                return this.Context.Set<T>().Any(expression);
+            }
+            catch (Exception e)
+            {
+            }
+            return false;
+        }
+        public DbSet<T> Do<T>() where T : class
+        {
+            return Context.Set<T>();
+        }
+        public IEnumerable<T> ExecuteSqlCom<T, U>(string sql, U paramObjs)
+            where U : class
+            where T : class
+        {
+            return Context.Set<T>().SqlQuery(sql, paramObjs);
+        }
+        public void Dispose()
+        {
+            Context.Dispose();
+        }
+    }
+}

+ 34 - 0
Fork.Net/Oreo.Plugins/Oreo.FaultLog/DatabaseEngine/SuperDb.cs

@@ -0,0 +1,34 @@
+using SQLite.CodeFirst;
+using System.Data.Entity;
+using System.Data.Entity.ModelConfiguration.Conventions;
+
+namespace Oreo.FaultLog.DatabaseEngine
+{
+    public class SuperDb : DbContext
+    {
+        public SuperDb()
+            : base(@"DefaultConnection")
+        {
+        }
+
+        protected override void OnModelCreating(DbModelBuilder modelBuilder)
+        {
+            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
+            modelBuilder.Configurations.AddFromAssembly(typeof(SuperDb).Assembly);
+
+            Database.SetInitializer(new MyDbInitializer(Database.Connection.ConnectionString, modelBuilder));
+        }
+
+        public class MyDbInitializer : SqliteDropCreateDatabaseWhenModelChanges<SuperDb>//SqliteDropCreateDatabaseAlways
+        {
+            public MyDbInitializer(string connectionString, DbModelBuilder modelBuilder)
+                : base(modelBuilder) { }
+
+            protected override void Seed(SuperDb context)
+            {
+                //context.Set<Files>().Add(new Files { FileName = "123" });
+                base.Seed(context);
+            }
+        }
+    }
+}

+ 20 - 0
Fork.Net/Oreo.Plugins/Oreo.FaultLog/Models/FaultLogs.cs

@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Oreo.FaultLog.Models
+{
+    public class FaultLogs
+    {
+        public int Id { get; set; }
+        public string Dept { get; set; }
+        public string User { get; set; }
+        public string Phone { get; set; }
+        public string Ip { get; set; }
+        public string System { get; set; }
+        public string Problem { get; set; }
+        public string Solution { get; set; }
+        public string Postscript { get; set; }
+    }
+}

+ 135 - 0
Fork.Net/Oreo.Plugins/Oreo.FaultLog/Oreo.FaultLog.csproj

@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{90C5C3EC-FE0F-46CA-9388-17E9C8AD7B6C}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Oreo.FaultLog</RootNamespace>
+    <AssemblyName>Oreo.FaultLog</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <NuGetPackageImportStamp>
+    </NuGetPackageImportStamp>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
+      <HintPath>..\..\packages\EntityFramework.6.1.0\lib\net40\EntityFramework.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
+      <HintPath>..\..\packages\EntityFramework.6.1.0\lib\net40\EntityFramework.SqlServer.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="SQLite.CodeFirst, Version=1.3.1.18, Culture=neutral, PublicKeyToken=eb96ba0a78d831a7, processorArchitecture=MSIL">
+      <HintPath>..\..\packages\SQLite.CodeFirst.1.3.1.18\lib\net40\SQLite.CodeFirst.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.ComponentModel.DataAnnotations" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Data.SQLite, Version=1.0.105.2, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
+      <HintPath>..\..\packages\System.Data.SQLite.Core.1.0.105.2\lib\net40\System.Data.SQLite.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Data.SQLite.EF6, Version=1.0.105.2, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
+      <HintPath>..\..\packages\System.Data.SQLite.EF6.1.0.105.2\lib\net40\System.Data.SQLite.EF6.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Data.SQLite.Linq, Version=1.0.105.2, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
+      <HintPath>..\..\packages\System.Data.SQLite.Linq.1.0.105.2\lib\net40\System.Data.SQLite.Linq.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="DatabaseEngine\Mapping.cs" />
+    <Compile Include="DatabaseEngine\Muse.cs" />
+    <Compile Include="DatabaseEngine\SuperDb.cs" />
+    <Compile Include="Models\FaultLogs.cs" />
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Views\MainForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Views\MainForm.Designer.cs">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </Compile>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <EmbeddedResource Include="Views\MainForm.resx">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <None Include="App.config" />
+    <None Include="packages.config" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\Y.Skin\Y.Skin.csproj">
+      <Project>{e9a97673-3e27-4a49-90bc-8806411a2f57}</Project>
+      <Name>Y.Skin</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\Y.Utils\Y.Utils.csproj">
+      <Project>{5b8eeec7-aeb5-407d-9dc1-1c59e53f78d5}</Project>
+      <Name>Y.Utils</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <Import Project="..\..\packages\System.Data.SQLite.Core.1.0.105.2\build\net40\System.Data.SQLite.Core.targets" Condition="Exists('..\..\packages\System.Data.SQLite.Core.1.0.105.2\build\net40\System.Data.SQLite.Core.targets')" />
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+    <PropertyGroup>
+      <ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
+    </PropertyGroup>
+    <Error Condition="!Exists('..\..\packages\System.Data.SQLite.Core.1.0.105.2\build\net40\System.Data.SQLite.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\System.Data.SQLite.Core.1.0.105.2\build\net40\System.Data.SQLite.Core.targets'))" />
+  </Target>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>

+ 22 - 0
Fork.Net/Oreo.Plugins/Oreo.FaultLog/Program.cs

@@ -0,0 +1,22 @@
+using Oreo.FaultLog.Views;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace Oreo.FaultLog
+{
+    static class Program
+    {
+        /// <summary>
+        /// 应用程序的主入口点。
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+            Application.Run(new MainForm());
+        }
+    }
+}

+ 36 - 0
Fork.Net/Oreo.Plugins/Oreo.FaultLog/Properties/AssemblyInfo.cs

@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("Oreo.FaultLog")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Oreo.FaultLog")]
+[assembly: AssemblyCopyright("Copyright ©  2017")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+//将 ComVisible 设置为 false 将使此程序集中的类型
+//对 COM 组件不可见。  如果需要从 COM 访问此程序集中的类型,
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("90c5c3ec-fe0f-46ca-9388-17e9c8ad7b6c")]
+
+// 程序集的版本信息由下列四个值组成: 
+//
+//      主版本
+//      次版本
+//      生成号
+//      修订号
+//
+//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
+// 方法是按如下所示使用“*”: :
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 71 - 0
Fork.Net/Oreo.Plugins/Oreo.FaultLog/Properties/Resources.Designer.cs

@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本: 4.0.30319.42000
+//
+//     对此文件的更改可能导致不正确的行为,如果
+//     重新生成代码,则所做更改将丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Oreo.FaultLog.Properties
+{
+
+
+    /// <summary>
+    ///   强类型资源类,用于查找本地化字符串等。
+    /// </summary>
+    // 此类是由 StronglyTypedResourceBuilder
+    // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
+    // 若要添加或删除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+    // (以 /str 作为命令选项),或重新生成 VS 项目。
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources
+    {
+
+        private static global::System.Resources.ResourceManager resourceMan;
+
+        private static global::System.Globalization.CultureInfo resourceCulture;
+
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources()
+        {
+        }
+
+        /// <summary>
+        ///   返回此类使用的缓存 ResourceManager 实例。
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager
+        {
+            get
+            {
+                if ((resourceMan == null))
+                {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Oreo.FaultLog.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+
+        /// <summary>
+        ///   覆盖当前线程的 CurrentUICulture 属性
+        ///   使用此强类型的资源类的资源查找。
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture
+        {
+            get
+            {
+                return resourceCulture;
+            }
+            set
+            {
+                resourceCulture = value;
+            }
+        }
+    }
+}

+ 117 - 0
Fork.Net/Oreo.Plugins/Oreo.FaultLog/Properties/Resources.resx

@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 30 - 0
Fork.Net/Oreo.Plugins/Oreo.FaultLog/Properties/Settings.Designer.cs

@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Oreo.FaultLog.Properties
+{
+
+
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+    {
+
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+        public static Settings Default
+        {
+            get
+            {
+                return defaultInstance;
+            }
+        }
+    }
+}

+ 7 - 0
Fork.Net/Oreo.Plugins/Oreo.FaultLog/Properties/Settings.settings

@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>

+ 273 - 0
Fork.Net/Oreo.Plugins/Oreo.FaultLog/Views/MainForm.Designer.cs

@@ -0,0 +1,273 @@
+namespace Oreo.FaultLog.Views
+{
+    partial class MainForm
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.dataGridView1 = new System.Windows.Forms.DataGridView();
+            this.PnMain = new System.Windows.Forms.Panel();
+            this.PnBody = new System.Windows.Forms.Panel();
+            this.PnBottom = new System.Windows.Forms.Panel();
+            this.PnInfo = new System.Windows.Forms.Panel();
+            this.label1 = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.label3 = new System.Windows.Forms.Label();
+            this.label5 = new System.Windows.Forms.Label();
+            this.label6 = new System.Windows.Forms.Label();
+            this.label7 = new System.Windows.Forms.Label();
+            this.label8 = new System.Windows.Forms.Label();
+            this.textBox1 = new System.Windows.Forms.TextBox();
+            this.textBox2 = new System.Windows.Forms.TextBox();
+            this.textBox3 = new System.Windows.Forms.TextBox();
+            this.textBox5 = new System.Windows.Forms.TextBox();
+            this.textBox6 = new System.Windows.Forms.TextBox();
+            this.textBox7 = new System.Windows.Forms.TextBox();
+            this.textBox8 = new System.Windows.Forms.TextBox();
+            ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
+            this.PnMain.SuspendLayout();
+            this.PnBody.SuspendLayout();
+            this.PnInfo.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // dataGridView1
+            // 
+            this.dataGridView1.AllowUserToAddRows = false;
+            this.dataGridView1.AllowUserToDeleteRows = false;
+            this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Bottom;
+            this.dataGridView1.Location = new System.Drawing.Point(0, 198);
+            this.dataGridView1.Name = "dataGridView1";
+            this.dataGridView1.ReadOnly = true;
+            this.dataGridView1.RowTemplate.Height = 23;
+            this.dataGridView1.Size = new System.Drawing.Size(600, 186);
+            this.dataGridView1.TabIndex = 4;
+            // 
+            // PnMain
+            // 
+            this.PnMain.Controls.Add(this.PnBottom);
+            this.PnMain.Controls.Add(this.PnBody);
+            this.PnMain.Dock = System.Windows.Forms.DockStyle.Bottom;
+            this.PnMain.Location = new System.Drawing.Point(0, 40);
+            this.PnMain.Name = "PnMain";
+            this.PnMain.Size = new System.Drawing.Size(600, 410);
+            this.PnMain.TabIndex = 5;
+            // 
+            // PnBody
+            // 
+            this.PnBody.Controls.Add(this.PnInfo);
+            this.PnBody.Controls.Add(this.dataGridView1);
+            this.PnBody.Dock = System.Windows.Forms.DockStyle.Top;
+            this.PnBody.Location = new System.Drawing.Point(0, 0);
+            this.PnBody.Name = "PnBody";
+            this.PnBody.Size = new System.Drawing.Size(600, 384);
+            this.PnBody.TabIndex = 5;
+            // 
+            // PnBottom
+            // 
+            this.PnBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
+            this.PnBottom.Location = new System.Drawing.Point(0, 382);
+            this.PnBottom.Name = "PnBottom";
+            this.PnBottom.Size = new System.Drawing.Size(600, 28);
+            this.PnBottom.TabIndex = 6;
+            // 
+            // PnInfo
+            // 
+            this.PnInfo.Controls.Add(this.textBox8);
+            this.PnInfo.Controls.Add(this.textBox7);
+            this.PnInfo.Controls.Add(this.textBox6);
+            this.PnInfo.Controls.Add(this.textBox5);
+            this.PnInfo.Controls.Add(this.textBox3);
+            this.PnInfo.Controls.Add(this.textBox2);
+            this.PnInfo.Controls.Add(this.textBox1);
+            this.PnInfo.Controls.Add(this.label8);
+            this.PnInfo.Controls.Add(this.label7);
+            this.PnInfo.Controls.Add(this.label6);
+            this.PnInfo.Controls.Add(this.label5);
+            this.PnInfo.Controls.Add(this.label3);
+            this.PnInfo.Controls.Add(this.label2);
+            this.PnInfo.Controls.Add(this.label1);
+            this.PnInfo.Dock = System.Windows.Forms.DockStyle.Top;
+            this.PnInfo.Location = new System.Drawing.Point(0, 0);
+            this.PnInfo.Name = "PnInfo";
+            this.PnInfo.Size = new System.Drawing.Size(600, 199);
+            this.PnInfo.TabIndex = 6;
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(168, 24);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(35, 12);
+            this.label1.TabIndex = 0;
+            this.label1.Text = "部门:";
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(16, 24);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(23, 12);
+            this.label2.TabIndex = 1;
+            this.label2.Text = "IP:";
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(308, 61);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(35, 12);
+            this.label3.TabIndex = 2;
+            this.label3.Text = "解决:";
+            // 
+            // label5
+            // 
+            this.label5.AutoSize = true;
+            this.label5.Location = new System.Drawing.Point(486, 24);
+            this.label5.Name = "label5";
+            this.label5.Size = new System.Drawing.Size(35, 12);
+            this.label5.TabIndex = 4;
+            this.label5.Text = "系统:";
+            // 
+            // label6
+            // 
+            this.label6.AutoSize = true;
+            this.label6.Location = new System.Drawing.Point(16, 147);
+            this.label6.Name = "label6";
+            this.label6.Size = new System.Drawing.Size(35, 12);
+            this.label6.TabIndex = 5;
+            this.label6.Text = "备注:";
+            // 
+            // label7
+            // 
+            this.label7.AutoSize = true;
+            this.label7.Location = new System.Drawing.Point(333, 24);
+            this.label7.Name = "label7";
+            this.label7.Size = new System.Drawing.Size(35, 12);
+            this.label7.TabIndex = 6;
+            this.label7.Text = "电话:";
+            // 
+            // label8
+            // 
+            this.label8.AutoSize = true;
+            this.label8.Location = new System.Drawing.Point(16, 61);
+            this.label8.Name = "label8";
+            this.label8.Size = new System.Drawing.Size(35, 12);
+            this.label8.TabIndex = 7;
+            this.label8.Text = "问题:";
+            // 
+            // textBox1
+            // 
+            this.textBox1.Location = new System.Drawing.Point(209, 20);
+            this.textBox1.Name = "textBox1";
+            this.textBox1.Size = new System.Drawing.Size(100, 21);
+            this.textBox1.TabIndex = 9;
+            // 
+            // textBox2
+            // 
+            this.textBox2.Location = new System.Drawing.Point(54, 20);
+            this.textBox2.Name = "textBox2";
+            this.textBox2.Size = new System.Drawing.Size(100, 21);
+            this.textBox2.TabIndex = 10;
+            // 
+            // textBox3
+            // 
+            this.textBox3.Location = new System.Drawing.Point(345, 58);
+            this.textBox3.Multiline = true;
+            this.textBox3.Name = "textBox3";
+            this.textBox3.Size = new System.Drawing.Size(225, 68);
+            this.textBox3.TabIndex = 11;
+            // 
+            // textBox5
+            // 
+            this.textBox5.Location = new System.Drawing.Point(527, 20);
+            this.textBox5.Name = "textBox5";
+            this.textBox5.Size = new System.Drawing.Size(27, 21);
+            this.textBox5.TabIndex = 13;
+            // 
+            // textBox6
+            // 
+            this.textBox6.Location = new System.Drawing.Point(54, 144);
+            this.textBox6.Multiline = true;
+            this.textBox6.Name = "textBox6";
+            this.textBox6.Size = new System.Drawing.Size(225, 36);
+            this.textBox6.TabIndex = 14;
+            // 
+            // textBox7
+            // 
+            this.textBox7.Location = new System.Drawing.Point(374, 20);
+            this.textBox7.Name = "textBox7";
+            this.textBox7.Size = new System.Drawing.Size(100, 21);
+            this.textBox7.TabIndex = 15;
+            // 
+            // textBox8
+            // 
+            this.textBox8.Location = new System.Drawing.Point(54, 58);
+            this.textBox8.Multiline = true;
+            this.textBox8.Name = "textBox8";
+            this.textBox8.Size = new System.Drawing.Size(225, 68);
+            this.textBox8.TabIndex = 16;
+            // 
+            // MainForm
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(600, 450);
+            this.Controls.Add(this.PnMain);
+            this.Name = "MainForm";
+            this.Text = "MainForm";
+            ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
+            this.PnMain.ResumeLayout(false);
+            this.PnBody.ResumeLayout(false);
+            this.PnInfo.ResumeLayout(false);
+            this.PnInfo.PerformLayout();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.DataGridView dataGridView1;
+        private System.Windows.Forms.Panel PnMain;
+        private System.Windows.Forms.Panel PnBottom;
+        private System.Windows.Forms.Panel PnBody;
+        private System.Windows.Forms.Panel PnInfo;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label label8;
+        private System.Windows.Forms.Label label7;
+        private System.Windows.Forms.Label label6;
+        private System.Windows.Forms.Label label5;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.TextBox textBox8;
+        private System.Windows.Forms.TextBox textBox7;
+        private System.Windows.Forms.TextBox textBox6;
+        private System.Windows.Forms.TextBox textBox5;
+        private System.Windows.Forms.TextBox textBox3;
+        private System.Windows.Forms.TextBox textBox2;
+        private System.Windows.Forms.TextBox textBox1;
+    }
+}

+ 20 - 0
Fork.Net/Oreo.Plugins/Oreo.FaultLog/Views/MainForm.cs

@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using Y.Skin.YoForm.NoTitle;
+
+namespace Oreo.FaultLog.Views
+{
+    public partial class MainForm : NoTitleForm
+    {
+        public MainForm()
+        {
+            InitializeComponent();
+        }
+    }
+}

+ 120 - 0
Fork.Net/Oreo.Plugins/Oreo.FaultLog/Views/MainForm.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 9 - 0
Fork.Net/Oreo.Plugins/Oreo.FaultLog/packages.config

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="EntityFramework" version="6.1.0" targetFramework="net40" />
+  <package id="SQLite.CodeFirst" version="1.3.1.18" targetFramework="net40" />
+  <package id="System.Data.SQLite" version="1.0.105.2" targetFramework="net40" />
+  <package id="System.Data.SQLite.Core" version="1.0.105.2" targetFramework="net40" />
+  <package id="System.Data.SQLite.EF6" version="1.0.105.2" targetFramework="net40" />
+  <package id="System.Data.SQLite.Linq" version="1.0.105.2" targetFramework="net40" />
+</packages>

+ 17 - 17
Fork.Net/Oreo.Plugins/Oreo.FileMan/DatabaseEngine/Muse.cs

@@ -9,17 +9,17 @@ namespace Oreo.FileMan.DatabaseEngine
 {
     class Muse : IDisposable
     {
-        SuperDb db;
+        public SuperDb Context;
         public Muse()
         {
-            db = new SuperDb();
+            Context = new SuperDb();
         }
 
         public int Add<T>(T EntityObj, bool isSave = true) where T : class
         {
             try
             {
-                this.db.Set<T>().Add(EntityObj);
+                this.Context.Set<T>().Add(EntityObj);
                 if (isSave)
                 {
                     return Save();
@@ -32,7 +32,7 @@ namespace Oreo.FileMan.DatabaseEngine
         {
             try
             {
-                db.Set<T>().AddRange(EntityObjs);
+                Context.Set<T>().AddRange(EntityObjs);
                 return Save();
             }
             catch (Exception e)
@@ -44,7 +44,7 @@ namespace Oreo.FileMan.DatabaseEngine
         {
             try
             {
-                this.db.Set<T>().Remove(EntityObj);
+                this.Context.Set<T>().Remove(EntityObj);
                 if (isSave)
                 {
                     return Save();
@@ -57,7 +57,7 @@ namespace Oreo.FileMan.DatabaseEngine
         {
             try
             {
-                this.db.Set<T>().RemoveRange(EntityObjs);
+                this.Context.Set<T>().RemoveRange(EntityObjs);
                 return Save();
             }
             catch (Exception e) { }
@@ -67,7 +67,7 @@ namespace Oreo.FileMan.DatabaseEngine
         {
             try
             {
-                this.db.Entry(EntityObj).State = EntityState.Modified;
+                this.Context.Entry(EntityObj).State = EntityState.Modified;
                 if (isSave)
                 {
                     return Save();
@@ -78,7 +78,7 @@ namespace Oreo.FileMan.DatabaseEngine
         }
         public int Save()
         {
-            return db.SaveChanges();
+            return Context.SaveChanges();
         }
 
         public T Get<T>(Expression<Func<T, bool>> expression, string[] include) where T : class
@@ -91,7 +91,7 @@ namespace Oreo.FileMan.DatabaseEngine
                     if (query != null)
                         return query.FirstOrDefault(expression);
                 }
-                return this.db.Set<T>().FirstOrDefault(expression);
+                return this.Context.Set<T>().FirstOrDefault(expression);
             }
             catch (Exception e)
             {
@@ -113,7 +113,7 @@ namespace Oreo.FileMan.DatabaseEngine
             {
                 throw;
             }
-            return db.Set<T>().Where(expression).ToList();
+            return Context.Set<T>().Where(expression).ToList();
         }
         public IEnumerable<T> GetAll<T>(string[] include, bool track) where T : class
         {
@@ -127,8 +127,8 @@ namespace Oreo.FileMan.DatabaseEngine
                         return query.AsNoTracking().ToList();
             }
             if (!track)
-                db.Set<T>().AsNoTracking().ToList();
-            return db.Set<T>().ToList();
+                Context.Set<T>().AsNoTracking().ToList();
+            return Context.Set<T>().ToList();
         }
         private DbQuery<T> GetInclude<T>(string[] include) where T : class
         {
@@ -136,7 +136,7 @@ namespace Oreo.FileMan.DatabaseEngine
             foreach (var item in include)
             {
                 if (searchCondition == null)
-                    searchCondition = this.db.Set<T>().Include(item);
+                    searchCondition = this.Context.Set<T>().Include(item);
                 else
                     searchCondition = searchCondition.Include(item);
             }
@@ -153,7 +153,7 @@ namespace Oreo.FileMan.DatabaseEngine
                     if (query != null)
                         return query.Any(expression);
                 }
-                return this.db.Set<T>().Any(expression);
+                return this.Context.Set<T>().Any(expression);
             }
             catch (Exception e)
             {
@@ -162,17 +162,17 @@ namespace Oreo.FileMan.DatabaseEngine
         }
         public DbSet<T> Do<T>() where T : class
         {
-            return db.Set<T>();
+            return Context.Set<T>();
         }
         public IEnumerable<T> ExecuteSqlCom<T, U>(string sql, U paramObjs)
             where U : class
             where T : class
         {
-            return db.Set<T>().SqlQuery(sql, paramObjs);
+            return Context.Set<T>().SqlQuery(sql, paramObjs);
         }
         public void Dispose()
         {
-            db.Dispose();
+            Context.Dispose();
         }
     }
 }

+ 52 - 16
Fork.Net/Oreo.Plugins/Oreo.FileMan/Partial/FileBackupPartial.Designer.cs

@@ -29,15 +29,18 @@
         private void InitializeComponent()
         {
             this.DgvPath = new System.Windows.Forms.DataGridView();
-            this.button1 = new System.Windows.Forms.Button();
             this.DgvPathName = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.DgvPathSize = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.BtAddFolder = new System.Windows.Forms.Button();
             this.DgvFile = new System.Windows.Forms.DataGridView();
             this.DgvFileName = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.DgvFilePath = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.DgvFileSize = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.DgvFileVersionHistory = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.DgvFileLastBackupTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.button1 = new System.Windows.Forms.Button();
+            this.textBox1 = new System.Windows.Forms.TextBox();
+            this.button2 = new System.Windows.Forms.Button();
             ((System.ComponentModel.ISupportInitialize)(this.DgvPath)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.DgvFile)).BeginInit();
             this.SuspendLayout();
@@ -49,23 +52,14 @@
             this.DgvPath.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
             this.DgvPathName,
             this.DgvPathSize});
-            this.DgvPath.Location = new System.Drawing.Point(3, 32);
+            this.DgvPath.Location = new System.Drawing.Point(7, 38);
             this.DgvPath.Name = "DgvPath";
             this.DgvPath.ReadOnly = true;
             this.DgvPath.RowHeadersVisible = false;
             this.DgvPath.RowTemplate.Height = 23;
-            this.DgvPath.Size = new System.Drawing.Size(218, 291);
+            this.DgvPath.Size = new System.Drawing.Size(214, 249);
             this.DgvPath.TabIndex = 0;
             // 
-            // button1
-            // 
-            this.button1.Location = new System.Drawing.Point(3, 3);
-            this.button1.Name = "button1";
-            this.button1.Size = new System.Drawing.Size(75, 23);
-            this.button1.TabIndex = 1;
-            this.button1.Text = "button1";
-            this.button1.UseVisualStyleBackColor = true;
-            // 
             // DgvPathName
             // 
             this.DgvPathName.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
@@ -80,6 +74,16 @@
             this.DgvPathSize.ReadOnly = true;
             this.DgvPathSize.Width = 60;
             // 
+            // BtAddFolder
+            // 
+            this.BtAddFolder.Location = new System.Drawing.Point(7, 6);
+            this.BtAddFolder.Name = "BtAddFolder";
+            this.BtAddFolder.Size = new System.Drawing.Size(75, 23);
+            this.BtAddFolder.TabIndex = 1;
+            this.BtAddFolder.Text = "添加目录";
+            this.BtAddFolder.UseVisualStyleBackColor = true;
+            this.BtAddFolder.Click += new System.EventHandler(this.BtAddFolder_Click);
+            // 
             // DgvFile
             // 
             this.DgvFile.AllowUserToAddRows = false;
@@ -90,12 +94,12 @@
             this.DgvFileSize,
             this.DgvFileVersionHistory,
             this.DgvFileLastBackupTime});
-            this.DgvFile.Location = new System.Drawing.Point(252, 32);
+            this.DgvFile.Location = new System.Drawing.Point(252, 38);
             this.DgvFile.Name = "DgvFile";
             this.DgvFile.ReadOnly = true;
             this.DgvFile.RowHeadersVisible = false;
             this.DgvFile.RowTemplate.Height = 23;
-            this.DgvFile.Size = new System.Drawing.Size(391, 291);
+            this.DgvFile.Size = new System.Drawing.Size(385, 249);
             this.DgvFile.TabIndex = 2;
             // 
             // DgvFileName
@@ -128,25 +132,54 @@
             this.DgvFileLastBackupTime.Name = "DgvFileLastBackupTime";
             this.DgvFileLastBackupTime.ReadOnly = true;
             // 
+            // button1
+            // 
+            this.button1.Location = new System.Drawing.Point(562, 6);
+            this.button1.Name = "button1";
+            this.button1.Size = new System.Drawing.Size(75, 23);
+            this.button1.TabIndex = 3;
+            this.button1.Text = "button1";
+            this.button1.UseVisualStyleBackColor = true;
+            // 
+            // textBox1
+            // 
+            this.textBox1.Location = new System.Drawing.Point(356, 297);
+            this.textBox1.Name = "textBox1";
+            this.textBox1.Size = new System.Drawing.Size(281, 21);
+            this.textBox1.TabIndex = 4;
+            // 
+            // button2
+            // 
+            this.button2.Location = new System.Drawing.Point(252, 295);
+            this.button2.Name = "button2";
+            this.button2.Size = new System.Drawing.Size(98, 23);
+            this.button2.TabIndex = 5;
+            this.button2.Text = "设置备份目录";
+            this.button2.UseVisualStyleBackColor = true;
+            // 
             // FileBackupPartial
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.Controls.Add(this.DgvFile);
+            this.Controls.Add(this.button2);
+            this.Controls.Add(this.textBox1);
             this.Controls.Add(this.button1);
+            this.Controls.Add(this.DgvFile);
+            this.Controls.Add(this.BtAddFolder);
             this.Controls.Add(this.DgvPath);
             this.Name = "FileBackupPartial";
             this.Size = new System.Drawing.Size(646, 326);
             ((System.ComponentModel.ISupportInitialize)(this.DgvPath)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.DgvFile)).EndInit();
             this.ResumeLayout(false);
+            this.PerformLayout();
 
         }
 
         #endregion
 
         private System.Windows.Forms.DataGridView DgvPath;
-        private System.Windows.Forms.Button button1;
+        private System.Windows.Forms.Button BtAddFolder;
         private System.Windows.Forms.DataGridViewTextBoxColumn DgvPathName;
         private System.Windows.Forms.DataGridViewTextBoxColumn DgvPathSize;
         private System.Windows.Forms.DataGridView DgvFile;
@@ -155,5 +188,8 @@
         private System.Windows.Forms.DataGridViewTextBoxColumn DgvFileSize;
         private System.Windows.Forms.DataGridViewTextBoxColumn DgvFileVersionHistory;
         private System.Windows.Forms.DataGridViewTextBoxColumn DgvFileLastBackupTime;
+        private System.Windows.Forms.Button button1;
+        private System.Windows.Forms.TextBox textBox1;
+        private System.Windows.Forms.Button button2;
     }
 }

+ 15 - 1
Fork.Net/Oreo.Plugins/Oreo.FileMan/Partial/FileBackupPartial.cs

@@ -7,14 +7,28 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Forms;
+using System.IO;
 
 namespace Oreo.FileMan.Partial
 {
     public partial class FileBackupPartial : UserControl
     {
+        List<string> BackupFolder = new List<string>();
         public FileBackupPartial()
         {
             InitializeComponent();
-        } 
+        }
+
+        private void BtAddFolder_Click(object sender, EventArgs e)
+        {
+            FolderBrowserDialog dialog = new FolderBrowserDialog();
+            dialog.Description = "请选择要备份的文件夹";
+            if (dialog.ShowDialog() == DialogResult.OK)
+            {
+                string foldPath = dialog.SelectedPath;
+                BackupFolder.Add(foldPath);
+                DgvPath.Rows.Add(new object[] { Path.GetFileName(foldPath), "0KB" });
+            }
+        }
     }
 }

+ 25 - 28
Fork.Net/Oreo.Plugins/Oreo.FileMan/Partial/FileTypePartial.cs

@@ -13,22 +13,23 @@ using Y.FileQueryEngine.UsnOperation;
 using System.IO;
 using Y.Utils.IOUtils.DriveUtils;
 using System.Data.SqlClient;
+using System.Data.Entity.Infrastructure;
+using Y.Utils.AppUtils;
 
 namespace Oreo.FileMan.Partial
 {
     public partial class FileTypePartial : UserControl
     {
-        int GetTypeFileCountInterval = 60 * 1000;
-        int GetTypeFileCountDetailInterval = 1000;
-        int GetFileToDatabaseInterval = 60 * 1000;
+        int GetFileToDatabaseInterval = 60 * 60 * 1000;
+        int WaitingInterval = 1000;
 
         int NewFileCount = 0;
 
-        string[] TypeVideo = new string[] { ".mp4", ".rmvb", ".wma" };
-        string[] TypeDoc = new string[] { ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".txt" };
-        string[] TypePicture = new string[] { ".jpg", ".bmp", ".png", ".icon", ".ico" };
-        string[] TypeMusic = new string[] { ".mp3", ".wma" };
-        string[] TypeSetup = new string[] { ".apk", ".msi" };
+        string[] TypeVideo = new string[] { ".mp4", ".rmvb", ".mkv" };
+        string[] TypeDoc = new string[] { ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx" };
+        string[] TypePicture = new string[] { ".jpg", ".bmp", ".png", ".psd" };
+        string[] TypeMusic = new string[] { ".mp3", ".wav" };
+        string[] TypeSetup = new string[] { ".apk", ".msi", "setup.exe" };
         string[] TypeZip = new string[] { ".zip", ".rar", ".iso" };
         public FileTypePartial()
         {
@@ -37,7 +38,14 @@ namespace Oreo.FileMan.Partial
 
         private void FileTypePartial_Load(object sender, EventArgs e)
         {
-            TaskOfGetFileToDatabase();//获取磁盘所有文件到文件索引数据库
+            if (PermissionTool.IsAdmin())
+            {
+                TaskOfGetFileToDatabase();//获取磁盘所有文件到文件索引数据库
+            }
+            else
+            {
+                LbFileCount.Text = "该功能需在管理员权限下运行";
+            }
         }
 
         private void TaskOfGetFileToDatabase()
@@ -52,6 +60,7 @@ namespace Oreo.FileMan.Partial
                 }
             });
         }
+        [Obsolete]
         private void GetFileToDatabase()
         {
             var drives = FileQueryEngine.GetReadyNtfsDrives().OrderByDescending(x => x.Name);
@@ -131,13 +140,6 @@ namespace Oreo.FileMan.Partial
         }
         private void GetFileToDatabase2()
         {
-            using (var db = new Muse())
-            {
-                var a = db.Get(x=>x.);
-                //var a = db.Database.SqlQuery<Drives>("delete from drives where name = 'C:\\'", new SqlParameter("@name", @"C:\"));
-
-            }
-
             var drives = FileQueryEngine.GetReadyNtfsDrives().OrderByDescending(x => x.Name);
             if (ListTool.HasElements(drives))
             {
@@ -154,11 +156,7 @@ namespace Oreo.FileMan.Partial
                         var ds = db.Get<Drives>(x => x.Name == drive.Name, null);
                         if ((ds == null) || (ds != null && ds.LastFormatTime != dt1.ToString()))
                         {
-                            var fs = db.Gets<Files>(x => x.Drive == drive.Name, null);
-                            if (ListTool.HasElements(fs))
-                            {
-                                //db.Dels(fs);
-                            }
+                            var deleteSql = db.Context.Database.ExecuteSqlCommand("DELETE FROM files WHERE drive = @p0;", drive.Name);
 
                             if (ds == null)
                             {
@@ -213,37 +211,36 @@ namespace Oreo.FileMan.Partial
         {
             //视频
             UISearchFileWaiting(LbVideoCount);
-            Thread.Sleep(GetTypeFileCountDetailInterval);
+            Thread.Sleep(WaitingInterval);
             int ctv = GetTypeFileCount(TypeVideo);
             UISetFileCount(LbVideoCount, ctv);
             //文档
             UISearchFileWaiting(LbDocCount);
-            Thread.Sleep(GetTypeFileCountDetailInterval);
+            Thread.Sleep(WaitingInterval);
             int ctd = GetTypeFileCount(TypeDoc);
             UISetFileCount(LbDocCount, ctd);
             //图片
             UISearchFileWaiting(LbPictureCount);
-            Thread.Sleep(GetTypeFileCountDetailInterval);
+            Thread.Sleep(WaitingInterval);
             int ctp = GetTypeFileCount(TypePicture);
             UISetFileCount(LbPictureCount, ctp);
             //音乐
             UISearchFileWaiting(LbMusicCount);
-            Thread.Sleep(GetTypeFileCountDetailInterval);
+            Thread.Sleep(WaitingInterval);
             int ctm = GetTypeFileCount(TypeMusic);
             UISetFileCount(LbMusicCount, ctm);
             //安装包
             UISearchFileWaiting(LbSetupCount);
-            Thread.Sleep(GetTypeFileCountDetailInterval);
+            Thread.Sleep(WaitingInterval);
             int cts = GetTypeFileCount(TypeSetup);
             UISetFileCount(LbSetupCount, cts);
             //压缩包
             UISearchFileWaiting(LbZipCount);
-            Thread.Sleep(GetTypeFileCountDetailInterval);
+            Thread.Sleep(WaitingInterval);
             int ctz = GetTypeFileCount(TypeZip);
             UISetFileCount(LbZipCount, ctz);
 
             UISearchFileWaiting(LbZipCount, false);
-            Thread.Sleep(GetTypeFileCountInterval);
         }
         private int GetTypeFileCount(string[] type)
         {

+ 2 - 2
Fork.Net/Oreo.Plugins/Oreo.FileMan/Properties/AssemblyInfo.cs

@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
 //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
 // 方法是按如下所示使用“*”: :
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+//[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.1")]

+ 53 - 13
Fork.Net/Oreo.Plugins/Oreo.FileMan/Views/MainForm.Designer.cs

@@ -38,6 +38,7 @@
             this.TpFileDecrypt = new System.Windows.Forms.TabPage();
             this.fileDecryptPartial1 = new Oreo.FileMan.Partial.FileDecryptPartial();
             this.TpFileBackup = new System.Windows.Forms.TabPage();
+            this.fileBackupPartial1 = new Oreo.FileMan.Partial.FileBackupPartial();
             this.LbFileType = new System.Windows.Forms.Label();
             this.LbFileBackup = new System.Windows.Forms.Label();
             this.LbFileEncrypt = new System.Windows.Forms.Label();
@@ -49,16 +50,20 @@
             this.LbFileDecrypt = new System.Windows.Forms.Label();
             this.PnBody = new System.Windows.Forms.Panel();
             this.NiMain = new System.Windows.Forms.NotifyIcon(this.components);
+            this.CmsNiMain = new System.Windows.Forms.ContextMenuStrip(this.components);
+            this.CmsNiMainShow = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+            this.CmsNiMainExit = new System.Windows.Forms.ToolStripMenuItem();
             this.PnMain = new System.Windows.Forms.Panel();
             this.PnBotton = new System.Windows.Forms.Panel();
             this.pictureBox1 = new System.Windows.Forms.PictureBox();
-            this.fileBackupPartial1 = new Oreo.FileMan.Partial.FileBackupPartial();
             this.tabControl1.SuspendLayout();
             this.TpFIleType.SuspendLayout();
             this.TpFileEncrypt.SuspendLayout();
             this.TpFileDecrypt.SuspendLayout();
             this.TpFileBackup.SuspendLayout();
             this.PnBody.SuspendLayout();
+            this.CmsNiMain.SuspendLayout();
             this.PnMain.SuspendLayout();
             this.PnBotton.SuspendLayout();
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
@@ -145,6 +150,14 @@
             this.TpFileBackup.Text = "文件备份";
             this.TpFileBackup.UseVisualStyleBackColor = true;
             // 
+            // fileBackupPartial1
+            // 
+            this.fileBackupPartial1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.fileBackupPartial1.Location = new System.Drawing.Point(3, 3);
+            this.fileBackupPartial1.Name = "fileBackupPartial1";
+            this.fileBackupPartial1.Size = new System.Drawing.Size(646, 326);
+            this.fileBackupPartial1.TabIndex = 0;
+            // 
             // LbFileType
             // 
             this.LbFileType.AutoSize = true;
@@ -188,9 +201,9 @@
             this.LbTitle.ForeColor = System.Drawing.Color.White;
             this.LbTitle.Location = new System.Drawing.Point(69, 22);
             this.LbTitle.Name = "LbTitle";
-            this.LbTitle.Size = new System.Drawing.Size(88, 25);
+            this.LbTitle.Size = new System.Drawing.Size(107, 25);
             this.LbTitle.TabIndex = 18;
-            this.LbTitle.Text = "文件管理";
+            this.LbTitle.Text = "文件管理";
             // 
             // BtClose
             // 
@@ -214,7 +227,7 @@
             this.LbAppVersion.Name = "LbAppVersion";
             this.LbAppVersion.Size = new System.Drawing.Size(140, 19);
             this.LbAppVersion.TabIndex = 0;
-            this.LbAppVersion.Text = "当前版本:10.10.10.10";
+            this.LbAppVersion.Text = "当前版本:99.99.99.99";
             this.LbAppVersion.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
             this.tip.SetToolTip(this.LbAppVersion, "当前软件版本");
             // 
@@ -256,9 +269,39 @@
             // 
             // NiMain
             // 
+            this.NiMain.ContextMenuStrip = this.CmsNiMain;
             this.NiMain.Icon = ((System.Drawing.Icon)(resources.GetObject("NiMain.Icon")));
-            this.NiMain.Text = "notifyIcon1";
+            this.NiMain.Text = "文件管理器";
             this.NiMain.Visible = true;
+            this.NiMain.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.NiMain_MouseDoubleClick);
+            // 
+            // CmsNiMain
+            // 
+            this.CmsNiMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.CmsNiMainShow,
+            this.toolStripSeparator1,
+            this.CmsNiMainExit});
+            this.CmsNiMain.Name = "CmsNiMain";
+            this.CmsNiMain.Size = new System.Drawing.Size(137, 54);
+            // 
+            // CmsNiMainShow
+            // 
+            this.CmsNiMainShow.Name = "CmsNiMainShow";
+            this.CmsNiMainShow.Size = new System.Drawing.Size(136, 22);
+            this.CmsNiMainShow.Text = "显示主界面";
+            this.CmsNiMainShow.Click += new System.EventHandler(this.CmsNiMainShow_Click);
+            // 
+            // toolStripSeparator1
+            // 
+            this.toolStripSeparator1.Name = "toolStripSeparator1";
+            this.toolStripSeparator1.Size = new System.Drawing.Size(133, 6);
+            // 
+            // CmsNiMainExit
+            // 
+            this.CmsNiMainExit.Name = "CmsNiMainExit";
+            this.CmsNiMainExit.Size = new System.Drawing.Size(136, 22);
+            this.CmsNiMainExit.Text = "退出";
+            this.CmsNiMainExit.Click += new System.EventHandler(this.CmsNiMainExit_Click);
             // 
             // PnMain
             // 
@@ -289,14 +332,6 @@
             this.pictureBox1.TabIndex = 17;
             this.pictureBox1.TabStop = false;
             // 
-            // fileBackupPartial1
-            // 
-            this.fileBackupPartial1.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.fileBackupPartial1.Location = new System.Drawing.Point(3, 3);
-            this.fileBackupPartial1.Name = "fileBackupPartial1";
-            this.fileBackupPartial1.Size = new System.Drawing.Size(646, 326);
-            this.fileBackupPartial1.TabIndex = 0;
-            // 
             // MainForm
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@@ -323,6 +358,7 @@
             this.TpFileDecrypt.ResumeLayout(false);
             this.TpFileBackup.ResumeLayout(false);
             this.PnBody.ResumeLayout(false);
+            this.CmsNiMain.ResumeLayout(false);
             this.PnMain.ResumeLayout(false);
             this.PnBotton.ResumeLayout(false);
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
@@ -355,5 +391,9 @@
         private System.Windows.Forms.Label LbAppVersion;
         private System.Windows.Forms.Button BTSettings;
         private Partial.FileBackupPartial fileBackupPartial1;
+        private System.Windows.Forms.ContextMenuStrip CmsNiMain;
+        private System.Windows.Forms.ToolStripMenuItem CmsNiMainShow;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+        private System.Windows.Forms.ToolStripMenuItem CmsNiMainExit;
     }
 }

+ 33 - 4
Fork.Net/Oreo.Plugins/Oreo.FileMan/Views/MainForm.cs

@@ -17,9 +17,9 @@ namespace Oreo.FileMan.Views
         }
         private void MainForm_Load(object sender, EventArgs e)
         {
+            LbAppVersion.Text = string.Format("当前版本:{0}", Application.ProductVersion);
         }
 
-
         #region 选项卡切换
         private void LbFileType_Click(object sender, EventArgs e)
         {
@@ -54,8 +54,9 @@ namespace Oreo.FileMan.Views
             now.ForeColor = Color.White;
         }
         #endregion
+
         /// <summary>
-        /// 设置
+        /// 打开设置
         /// </summary>
         /// <param name="sender"></param>
         /// <param name="e"></param>
@@ -64,13 +65,41 @@ namespace Oreo.FileMan.Views
             new SettingsForm().ShowDialog();
         }
         /// <summary>
-        /// 退出
+        /// 隐藏主界面
         /// </summary>
         /// <param name="sender"></param>
         /// <param name="e"></param>
         private void BtClose_Click(object sender, EventArgs e)
         {
-            BeginInvoke(new Action(() => { Close(); }));
+            Hide();
+        }
+        /// <summary>
+        /// 显示主界面
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void CmsNiMainShow_Click(object sender, EventArgs e)
+        {
+            Show();
+        }
+        /// <summary>
+        /// 退出程序
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void CmsNiMainExit_Click(object sender, EventArgs e)
+        {
+            NiMain.Visible = false;
+            Close();
+        }
+        /// <summary>
+        /// 显示主界面
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void NiMain_MouseDoubleClick(object sender, MouseEventArgs e)
+        {
+            Show();
         }
     }
 }

+ 3 - 0
Fork.Net/Oreo.Plugins/Oreo.FileMan/Views/MainForm.resx

@@ -123,6 +123,9 @@
   <metadata name="NiMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>84, 17</value>
   </metadata>
+  <metadata name="CmsNiMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>179, 17</value>
+  </metadata>
   <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   <data name="NiMain.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>

+ 11 - 0
Fork.Net/Y.Utils/AppUtils/PermissionTool.cs

@@ -10,12 +10,23 @@ namespace Y.Utils.AppUtils
 {
     public class PermissionTool
     {
+        /// <summary>
+        /// 当前登录用户是否为管理员
+        /// 百万次执行时间:26947、28705、28244 ms
+        /// </summary>
+        /// <returns></returns>
+        [Obsolete]
         public static bool IsAdministrator()
         {
             WindowsIdentity identity = WindowsIdentity.GetCurrent();
             WindowsPrincipal principal = new WindowsPrincipal(identity);
             return principal.IsInRole(WindowsBuiltInRole.Administrator);
         }
+        /// <summary>
+        /// 当前登录用户是否为管理员
+        /// 百万次执行时间:8063、9097、9755 ms
+        /// </summary>
+        /// <returns></returns>
         public static bool IsAdmin()
         {
             const int SECURITY_BUILTIN_DOMAIN_RID = 0x20;

BIN
Fork.Net/packages/EntityFramework.6.1.0/EntityFramework.6.1.0.nupkg


+ 5 - 0
Fork.Net/packages/EntityFramework.6.1.0/content/App.config.transform

@@ -0,0 +1,5 @@
+<configuration>
+    <configSections>
+        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
+    </configSections>
+</configuration>

+ 5 - 0
Fork.Net/packages/EntityFramework.6.1.0/content/Web.config.transform

@@ -0,0 +1,5 @@
+<configuration>
+    <configSections>
+        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
+    </configSections>
+</configuration>

BIN
Fork.Net/packages/EntityFramework.6.1.0/lib/net40/EntityFramework.SqlServer.dll


File diff suppressed because it is too large
+ 1858 - 0
Fork.Net/packages/EntityFramework.6.1.0/lib/net40/EntityFramework.SqlServer.xml


BIN
Fork.Net/packages/EntityFramework.6.1.0/lib/net40/EntityFramework.dll


File diff suppressed because it is too large
+ 45071 - 0
Fork.Net/packages/EntityFramework.6.1.0/lib/net40/EntityFramework.xml


BIN
Fork.Net/packages/EntityFramework.6.1.0/lib/net45/EntityFramework.SqlServer.dll


File diff suppressed because it is too large
+ 1858 - 0
Fork.Net/packages/EntityFramework.6.1.0/lib/net45/EntityFramework.SqlServer.xml


BIN
Fork.Net/packages/EntityFramework.6.1.0/lib/net45/EntityFramework.dll


File diff suppressed because it is too large
+ 52245 - 0
Fork.Net/packages/EntityFramework.6.1.0/lib/net45/EntityFramework.xml


BIN
Fork.Net/packages/EntityFramework.6.1.0/tools/EntityFramework.PowerShell.Utility.dll


BIN
Fork.Net/packages/EntityFramework.6.1.0/tools/EntityFramework.PowerShell.dll


BIN
Fork.Net/packages/EntityFramework.6.1.0/tools/EntityFramework.psd1


File diff suppressed because it is too large
+ 1167 - 0
Fork.Net/packages/EntityFramework.6.1.0/tools/EntityFramework.psm1


+ 48 - 0
Fork.Net/packages/EntityFramework.6.1.0/tools/about_EntityFramework.help.txt

@@ -0,0 +1,48 @@
+TOPIC
+    about_EntityFramework
+
+SHORT DESCRIPTION
+    Provides information about Entity Framework commands.
+
+LONG DESCRIPTION
+    This topic describes the Entity Framework commands. Entity Framework is
+    Microsoft's recommended data access technology for new applications.
+
+    The following Entity Framework cmdlets are used with Entity Framework
+    Migrations.
+
+        Cmdlet              Description
+        -----------------   ---------------------------------------------------
+        Enable-Migrations   Enables Code First Migrations in a project.
+
+        Add-Migration       Scaffolds a migration script for any pending model
+                            changes.
+
+        Update-Database     Applies any pending migrations to the database.
+
+        Get-Migrations      Displays the migrations that have been applied to
+                            the target database.
+
+    The following Entity Framework cmdlets are used by NuGet packages that
+    install Entity Framework providers. These commands are not usually used as
+    part of normal application development.
+
+        Cmdlet                          Description
+        ------------------------------  ---------------------------------------
+        Add-EFProvider                  Adds or updates an Entity Framework
+                                        provider entry in the project config
+                                        file.
+
+        Add-EFDefaultConnectionFactory  Adds or updates an Entity Framework
+                                        default connection factory in the
+                                        project config file.
+
+        Initialize-EFConfiguration      Initializes the Entity Framework
+                                        section in the project config file and
+                                        sets defaults.
+
+SEE ALSO
+    Enable-Migrations
+    Add-Migration
+    Update-Database
+    Get-Migrations

+ 154 - 0
Fork.Net/packages/EntityFramework.6.1.0/tools/init.ps1

@@ -0,0 +1,154 @@
+param($installPath, $toolsPath, $package, $project)
+
+if (Get-Module | ?{ $_.Name -eq 'EntityFramework' })
+{
+    Remove-Module EntityFramework
+}
+
+Import-Module (Join-Path $toolsPath EntityFramework.psd1)
+
+# SIG # Begin signature block
+# MIIarwYJKoZIhvcNAQcCoIIaoDCCGpwCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
+# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
+# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUjXj4E03IfImYfKMB4CA3DfY0
+# KZmgghWCMIIEwzCCA6ugAwIBAgITMwAAADPlJ4ajDkoqgAAAAAAAMzANBgkqhkiG
+# 9w0BAQUFADB3MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G
+# A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEw
+# HwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EwHhcNMTMwMzI3MjAwODIz
+# WhcNMTQwNjI3MjAwODIzWjCBszELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
+# bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
+# b3JhdGlvbjENMAsGA1UECxMETU9QUjEnMCUGA1UECxMebkNpcGhlciBEU0UgRVNO
+# OkY1MjgtMzc3Ny04QTc2MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBT
+# ZXJ2aWNlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyt7KGQ8fllaC
+# X9hCMtQIbbadwMLtfDirWDOta4FQuIghCl2vly2QWsfDLrJM1GN0WP3fxYlU0AvM
+# /ZyEEXmsoyEibTPgrt4lQEWSTg1jCCuLN91PB2rcKs8QWo9XXZ09+hdjAsZwPrsi
+# 7Vux9zK65HG8ef/4y+lXP3R75vJ9fFdYL6zSDqjZiNlAHzoiQeIJJgKgzOUlzoxn
+# g99G+IVNw9pmHsdzfju0dhempaCgdFWo5WAYQWI4x2VGqwQWZlbq+abLQs9dVGQv
+# gfjPOAAPEGvhgy6NPkjsSVZK7Jpp9MsPEPsHNEpibAGNbscghMpc0WOZHo5d7A+l
+# Fkiqa94hLwIDAQABo4IBCTCCAQUwHQYDVR0OBBYEFABYGz7txfEGk74xPTa0rAtd
+# MvCBMB8GA1UdIwQYMBaAFCM0+NlSRnAK7UD7dvuzK7DDNbMPMFQGA1UdHwRNMEsw
+# SaBHoEWGQ2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3Rz
+# L01pY3Jvc29mdFRpbWVTdGFtcFBDQS5jcmwwWAYIKwYBBQUHAQEETDBKMEgGCCsG
+# AQUFBzAChjxodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY3Jv
+# c29mdFRpbWVTdGFtcFBDQS5jcnQwEwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZI
+# hvcNAQEFBQADggEBAAL/44wD6u9+OLm5fJ87UoOk+iM41AO4alm16uBviAP0b1Fq
+# lTp1hegc3AfFTp0bqM4kRxQkTzV3sZy8J3uPXU/8BouXl/kpm/dAHVKBjnZIA37y
+# mxe3rtlbIpFjOzJfNfvGkTzM7w6ZgD4GkTgTegxMvjPbv+2tQcZ8GyR8E9wK/EuK
+# IAUdCYmROQdOIU7ebHxwu6vxII74mHhg3IuUz2W+lpAPoJyE7Vy1fEGgYS29Q2dl
+# GiqC1KeKWfcy46PnxY2yIruSKNiwjFOPaEdHodgBsPFhFcQXoS3jOmxPb6897t4p
+# sETLw5JnugDOD44R79ECgjFJlJidUUh4rR3WQLYwggTsMIID1KADAgECAhMzAAAA
+# sBGvCovQO5/dAAEAAACwMA0GCSqGSIb3DQEBBQUAMHkxCzAJBgNVBAYTAlVTMRMw
+# EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN
+# aWNyb3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNp
+# Z25pbmcgUENBMB4XDTEzMDEyNDIyMzMzOVoXDTE0MDQyNDIyMzMzOVowgYMxCzAJ
+# BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k
+# MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xDTALBgNVBAsTBE1PUFIx
+# HjAcBgNVBAMTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjCCASIwDQYJKoZIhvcNAQEB
+# BQADggEPADCCAQoCggEBAOivXKIgDfgofLwFe3+t7ut2rChTPzrbQH2zjjPmVz+l
+# URU0VKXPtIupP6g34S1Q7TUWTu9NetsTdoiwLPBZXKnr4dcpdeQbhSeb8/gtnkE2
+# KwtA+747urlcdZMWUkvKM8U3sPPrfqj1QRVcCGUdITfwLLoiCxCxEJ13IoWEfE+5
+# G5Cw9aP+i/QMmk6g9ckKIeKq4wE2R/0vgmqBA/WpNdyUV537S9QOgts4jxL+49Z6
+# dIhk4WLEJS4qrp0YHw4etsKvJLQOULzeHJNcSaZ5tbbbzvlweygBhLgqKc+/qQUF
+# 4eAPcU39rVwjgynrx8VKyOgnhNN+xkMLlQAFsU9lccUCAwEAAaOCAWAwggFcMBMG
+# A1UdJQQMMAoGCCsGAQUFBwMDMB0GA1UdDgQWBBRZcaZaM03amAeA/4Qevof5cjJB
+# 8jBRBgNVHREESjBIpEYwRDENMAsGA1UECxMETU9QUjEzMDEGA1UEBRMqMzE1OTUr
+# NGZhZjBiNzEtYWQzNy00YWEzLWE2NzEtNzZiYzA1MjM0NGFkMB8GA1UdIwQYMBaA
+# FMsR6MrStBZYAck3LjMWFrlMmgofMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9j
+# cmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY0NvZFNpZ1BDQV8w
+# OC0zMS0yMDEwLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6
+# Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljQ29kU2lnUENBXzA4LTMx
+# LTIwMTAuY3J0MA0GCSqGSIb3DQEBBQUAA4IBAQAx124qElczgdWdxuv5OtRETQie
+# 7l7falu3ec8CnLx2aJ6QoZwLw3+ijPFNupU5+w3g4Zv0XSQPG42IFTp8263Os8ls
+# ujksRX0kEVQmMA0N/0fqAwfl5GZdLHudHakQ+hywdPJPaWueqSSE2u2WoN9zpO9q
+# GqxLYp7xfMAUf0jNTbJE+fA8k21C2Oh85hegm2hoCSj5ApfvEQO6Z1Ktwemzc6bS
+# Y81K4j7k8079/6HguwITO10g3lU/o66QQDE4dSheBKlGbeb1enlAvR/N6EXVruJd
+# PvV1x+ZmY2DM1ZqEh40kMPfvNNBjHbFCZ0oOS786Du+2lTqnOOQlkgimiGaCMIIF
+# vDCCA6SgAwIBAgIKYTMmGgAAAAAAMTANBgkqhkiG9w0BAQUFADBfMRMwEQYKCZIm
+# iZPyLGQBGRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0MS0wKwYDVQQD
+# EyRNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTAwODMx
+# MjIxOTMyWhcNMjAwODMxMjIyOTMyWjB5MQswCQYDVQQGEwJVUzETMBEGA1UECBMK
+# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
+# IENvcnBvcmF0aW9uMSMwIQYDVQQDExpNaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBD
+# QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJyWVwZMGS/HZpgICBC
+# mXZTbD4b1m/My/Hqa/6XFhDg3zp0gxq3L6Ay7P/ewkJOI9VyANs1VwqJyq4gSfTw
+# aKxNS42lvXlLcZtHB9r9Jd+ddYjPqnNEf9eB2/O98jakyVxF3K+tPeAoaJcap6Vy
+# c1bxF5Tk/TWUcqDWdl8ed0WDhTgW0HNbBbpnUo2lsmkv2hkL/pJ0KeJ2L1TdFDBZ
+# +NKNYv3LyV9GMVC5JxPkQDDPcikQKCLHN049oDI9kM2hOAaFXE5WgigqBTK3S9dP
+# Y+fSLWLxRT3nrAgA9kahntFbjCZT6HqqSvJGzzc8OJ60d1ylF56NyxGPVjzBrAlf
+# A9MCAwEAAaOCAV4wggFaMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMsR6MrS
+# tBZYAck3LjMWFrlMmgofMAsGA1UdDwQEAwIBhjASBgkrBgEEAYI3FQEEBQIDAQAB
+# MCMGCSsGAQQBgjcVAgQWBBT90TFO0yaKleGYYDuoMW+mPLzYLTAZBgkrBgEEAYI3
+# FAIEDB4KAFMAdQBiAEMAQTAfBgNVHSMEGDAWgBQOrIJgQFYnl+UlE/wq4QpTlVnk
+# pDBQBgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtp
+# L2NybC9wcm9kdWN0cy9taWNyb3NvZnRyb290Y2VydC5jcmwwVAYIKwYBBQUHAQEE
+# SDBGMEQGCCsGAQUFBzAChjhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2Nl
+# cnRzL01pY3Jvc29mdFJvb3RDZXJ0LmNydDANBgkqhkiG9w0BAQUFAAOCAgEAWTk+
+# fyZGr+tvQLEytWrrDi9uqEn361917Uw7LddDrQv+y+ktMaMjzHxQmIAhXaw9L0y6
+# oqhWnONwu7i0+Hm1SXL3PupBf8rhDBdpy6WcIC36C1DEVs0t40rSvHDnqA2iA6VW
+# 4LiKS1fylUKc8fPv7uOGHzQ8uFaa8FMjhSqkghyT4pQHHfLiTviMocroE6WRTsgb
+# 0o9ylSpxbZsa+BzwU9ZnzCL/XB3Nooy9J7J5Y1ZEolHN+emjWFbdmwJFRC9f9Nqu
+# 1IIybvyklRPk62nnqaIsvsgrEA5ljpnb9aL6EiYJZTiU8XofSrvR4Vbo0HiWGFzJ
+# NRZf3ZMdSY4tvq00RBzuEBUaAF3dNVshzpjHCe6FDoxPbQ4TTj18KUicctHzbMrB
+# 7HCjV5JXfZSNoBtIA1r3z6NnCnSlNu0tLxfI5nI3EvRvsTxngvlSso0zFmUeDord
+# EN5k9G/ORtTTF+l5xAS00/ss3x+KnqwK+xMnQK3k+eGpf0a7B2BHZWBATrBC7E7t
+# s3Z52Ao0CW0cgDEf4g5U3eWh++VHEK1kmP9QFi58vwUheuKVQSdpw5OPlcmN2Jsh
+# rg1cnPCiroZogwxqLbt2awAdlq3yFnv2FoMkuYjPaqhHMS+a3ONxPdcAfmJH0c6I
+# ybgY+g5yjcGjPa8CQGr/aZuW4hCoELQ3UAjWwz0wggYHMIID76ADAgECAgphFmg0
+# AAAAAAAcMA0GCSqGSIb3DQEBBQUAMF8xEzARBgoJkiaJk/IsZAEZFgNjb20xGTAX
+# BgoJkiaJk/IsZAEZFgltaWNyb3NvZnQxLTArBgNVBAMTJE1pY3Jvc29mdCBSb290
+# IENlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0wNzA0MDMxMjUzMDlaFw0yMTA0MDMx
+# MzAzMDlaMHcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD
+# VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xITAf
+# BgNVBAMTGE1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQTCCASIwDQYJKoZIhvcNAQEB
+# BQADggEPADCCAQoCggEBAJ+hbLHf20iSKnxrLhnhveLjxZlRI1Ctzt0YTiQP7tGn
+# 0UytdDAgEesH1VSVFUmUG0KSrphcMCbaAGvoe73siQcP9w4EmPCJzB/LMySHnfL0
+# Zxws/HvniB3q506jocEjU8qN+kXPCdBer9CwQgSi+aZsk2fXKNxGU7CG0OUoRi4n
+# rIZPVVIM5AMs+2qQkDBuh/NZMJ36ftaXs+ghl3740hPzCLdTbVK0RZCfSABKR2YR
+# JylmqJfk0waBSqL5hKcRRxQJgp+E7VV4/gGaHVAIhQAQMEbtt94jRrvELVSfrx54
+# QTF3zJvfO4OToWECtR0Nsfz3m7IBziJLVP/5BcPCIAsCAwEAAaOCAaswggGnMA8G
+# A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFCM0+NlSRnAK7UD7dvuzK7DDNbMPMAsG
+# A1UdDwQEAwIBhjAQBgkrBgEEAYI3FQEEAwIBADCBmAYDVR0jBIGQMIGNgBQOrIJg
+# QFYnl+UlE/wq4QpTlVnkpKFjpGEwXzETMBEGCgmSJomT8ixkARkWA2NvbTEZMBcG
+# CgmSJomT8ixkARkWCW1pY3Jvc29mdDEtMCsGA1UEAxMkTWljcm9zb2Z0IFJvb3Qg
+# Q2VydGlmaWNhdGUgQXV0aG9yaXR5ghB5rRahSqClrUxzWPQHEy5lMFAGA1UdHwRJ
+# MEcwRaBDoEGGP2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1
+# Y3RzL21pY3Jvc29mdHJvb3RjZXJ0LmNybDBUBggrBgEFBQcBAQRIMEYwRAYIKwYB
+# BQUHMAKGOGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljcm9z
+# b2Z0Um9vdENlcnQuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMIMA0GCSqGSIb3DQEB
+# BQUAA4ICAQAQl4rDXANENt3ptK132855UU0BsS50cVttDBOrzr57j7gu1BKijG1i
+# uFcCy04gE1CZ3XpA4le7r1iaHOEdAYasu3jyi9DsOwHu4r6PCgXIjUji8FMV3U+r
+# kuTnjWrVgMHmlPIGL4UD6ZEqJCJw+/b85HiZLg33B+JwvBhOnY5rCnKVuKE5nGct
+# xVEO6mJcPxaYiyA/4gcaMvnMMUp2MT0rcgvI6nA9/4UKE9/CCmGO8Ne4F+tOi3/F
+# NSteo7/rvH0LQnvUU3Ih7jDKu3hlXFsBFwoUDtLaFJj1PLlmWLMtL+f5hYbMUVbo
+# nXCUbKw5TNT2eb+qGHpiKe+imyk0BncaYsk9Hm0fgvALxyy7z0Oz5fnsfbXjpKh0
+# NbhOxXEjEiZ2CzxSjHFaRkMUvLOzsE1nyJ9C/4B5IYCeFTBm6EISXhrIniIh0EPp
+# K+m79EjMLNTYMoBMJipIJF9a6lbvpt6Znco6b72BJ3QGEe52Ib+bgsEnVLaxaj2J
+# oXZhtG6hE6a/qkfwEm/9ijJssv7fUciMI8lmvZ0dhxJkAj0tr1mPuOQh5bWwymO0
+# eFQF1EEuUKyUsKV4q7OglnUa2ZKHE3UiLzKoCG6gW4wlv6DvhMoh1useT8ma7kng
+# 9wFlb4kLfchpyOZu6qeXzjEp/w7FW1zYTRuh2Povnj8uVRZryROj/TGCBJcwggST
+# AgEBMIGQMHkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD
+# VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xIzAh
+# BgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBAhMzAAAAsBGvCovQO5/d
+# AAEAAACwMAkGBSsOAwIaBQCggbAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQw
+# HAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFOrT
+# ZEbL6mMRie0QxeNrtIXxNuY6MFAGCisGAQQBgjcCAQwxQjBAoCKAIABFAG4AdABp
+# AHQAeQAgAEYAcgBhAG0AZQB3AG8AcgBroRqAGGh0dHA6Ly9tc2RuLmNvbS9kYXRh
+# L2VmIDANBgkqhkiG9w0BAQEFAASCAQAp46rF491ax2xI+ywddNCS8k+nfEHapr0P
+# /5psYf8iQn+QOp8boRjDaP3AVdnbf+ZHAhkqc+/1RoEI6FbfLqPECRFKAdMip3vR
+# cHC/CcTsCTrJzn9/seSsoVFO+6zY4K8VNtlGD4cQNXkOy+2WAdvXlyiUi4qKC7tr
+# XyF6KsbdhqXynrfRHkPUTMm1KakaH571roCd40WQrNh5Sec4m1ndOoY6pR2y3c/d
+# EyTV/T3IhH0i8AsQxFOhDnxFNDWPKY83my2mZCWiW9XTMykCqNsBcQ2iAIb3oIx7
+# A7iLTvyDiVYrYfzVcJmJGqSZjAkHiKj02uIA/mWNyblckled8XzJoYICKDCCAiQG
+# CSqGSIb3DQEJBjGCAhUwggIRAgEBMIGOMHcxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
+# EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3Nv
+# ZnQgQ29ycG9yYXRpb24xITAfBgNVBAMTGE1pY3Jvc29mdCBUaW1lLVN0YW1wIFBD
+# QQITMwAAADPlJ4ajDkoqgAAAAAAAMzAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkD
+# MQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTQwMjI1MDkzMTQ0WjAjBgkq
+# hkiG9w0BCQQxFgQUmKcMuWdwUtNtz9/a4twIEFV7cyAwDQYJKoZIhvcNAQEFBQAE
+# ggEAgnK8zYmQecK3YAM4i57HjUCmVdCNr1M94krY7o6lhzhxSZyF9n/C97Edpdcx
+# 1uWCZnkZg3sa6afdteHkBO/tUDbV1Dhg+ZNHNJ4eOP9UzpISL8Eh7Jf8a7Cxt+vb
+# kfJBytSXC1j+NkNfP91n0FIM/XWZV8pRtCvZ/PRKdOUs5qOVHyvHSXiEsXdvjSAf
+# SbLmfBHS/F1LntXoNLG/nnWOWn5d/uZIKf+qbL3fMPBX8qFHXecorR1rZgpCZY7+
+# Ng53xMPqn2xYiamcOnvXzIFPcEti76E0rzHQm5qtpSbyYJfnBt9L7sSWLAKqmPj3
+# xj4PSE0Zq0fsAoGsaQa5rj4U1w==
+# SIG # End signature block

+ 153 - 0
Fork.Net/packages/EntityFramework.6.1.0/tools/install.ps1

@@ -0,0 +1,153 @@
+param($installPath, $toolsPath, $package, $project)
+
+Initialize-EFConfiguration $project
+Add-EFProvider $project 'System.Data.SqlClient' 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer'
+
+Write-Host
+Write-Host "Type 'get-help EntityFramework' to see all available Entity Framework commands."
+
+# SIG # Begin signature block
+# MIIarwYJKoZIhvcNAQcCoIIaoDCCGpwCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
+# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
+# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUt8mwpdjiFmu2B4KBh+vEeQ+V
+# VnSgghWCMIIEwzCCA6ugAwIBAgITMwAAADPlJ4ajDkoqgAAAAAAAMzANBgkqhkiG
+# 9w0BAQUFADB3MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G
+# A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEw
+# HwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EwHhcNMTMwMzI3MjAwODIz
+# WhcNMTQwNjI3MjAwODIzWjCBszELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
+# bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
+# b3JhdGlvbjENMAsGA1UECxMETU9QUjEnMCUGA1UECxMebkNpcGhlciBEU0UgRVNO
+# OkY1MjgtMzc3Ny04QTc2MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBT
+# ZXJ2aWNlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyt7KGQ8fllaC
+# X9hCMtQIbbadwMLtfDirWDOta4FQuIghCl2vly2QWsfDLrJM1GN0WP3fxYlU0AvM
+# /ZyEEXmsoyEibTPgrt4lQEWSTg1jCCuLN91PB2rcKs8QWo9XXZ09+hdjAsZwPrsi
+# 7Vux9zK65HG8ef/4y+lXP3R75vJ9fFdYL6zSDqjZiNlAHzoiQeIJJgKgzOUlzoxn
+# g99G+IVNw9pmHsdzfju0dhempaCgdFWo5WAYQWI4x2VGqwQWZlbq+abLQs9dVGQv
+# gfjPOAAPEGvhgy6NPkjsSVZK7Jpp9MsPEPsHNEpibAGNbscghMpc0WOZHo5d7A+l
+# Fkiqa94hLwIDAQABo4IBCTCCAQUwHQYDVR0OBBYEFABYGz7txfEGk74xPTa0rAtd
+# MvCBMB8GA1UdIwQYMBaAFCM0+NlSRnAK7UD7dvuzK7DDNbMPMFQGA1UdHwRNMEsw
+# SaBHoEWGQ2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3Rz
+# L01pY3Jvc29mdFRpbWVTdGFtcFBDQS5jcmwwWAYIKwYBBQUHAQEETDBKMEgGCCsG
+# AQUFBzAChjxodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY3Jv
+# c29mdFRpbWVTdGFtcFBDQS5jcnQwEwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZI
+# hvcNAQEFBQADggEBAAL/44wD6u9+OLm5fJ87UoOk+iM41AO4alm16uBviAP0b1Fq
+# lTp1hegc3AfFTp0bqM4kRxQkTzV3sZy8J3uPXU/8BouXl/kpm/dAHVKBjnZIA37y
+# mxe3rtlbIpFjOzJfNfvGkTzM7w6ZgD4GkTgTegxMvjPbv+2tQcZ8GyR8E9wK/EuK
+# IAUdCYmROQdOIU7ebHxwu6vxII74mHhg3IuUz2W+lpAPoJyE7Vy1fEGgYS29Q2dl
+# GiqC1KeKWfcy46PnxY2yIruSKNiwjFOPaEdHodgBsPFhFcQXoS3jOmxPb6897t4p
+# sETLw5JnugDOD44R79ECgjFJlJidUUh4rR3WQLYwggTsMIID1KADAgECAhMzAAAA
+# sBGvCovQO5/dAAEAAACwMA0GCSqGSIb3DQEBBQUAMHkxCzAJBgNVBAYTAlVTMRMw
+# EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN
+# aWNyb3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNp
+# Z25pbmcgUENBMB4XDTEzMDEyNDIyMzMzOVoXDTE0MDQyNDIyMzMzOVowgYMxCzAJ
+# BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k
+# MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xDTALBgNVBAsTBE1PUFIx
+# HjAcBgNVBAMTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjCCASIwDQYJKoZIhvcNAQEB
+# BQADggEPADCCAQoCggEBAOivXKIgDfgofLwFe3+t7ut2rChTPzrbQH2zjjPmVz+l
+# URU0VKXPtIupP6g34S1Q7TUWTu9NetsTdoiwLPBZXKnr4dcpdeQbhSeb8/gtnkE2
+# KwtA+747urlcdZMWUkvKM8U3sPPrfqj1QRVcCGUdITfwLLoiCxCxEJ13IoWEfE+5
+# G5Cw9aP+i/QMmk6g9ckKIeKq4wE2R/0vgmqBA/WpNdyUV537S9QOgts4jxL+49Z6
+# dIhk4WLEJS4qrp0YHw4etsKvJLQOULzeHJNcSaZ5tbbbzvlweygBhLgqKc+/qQUF
+# 4eAPcU39rVwjgynrx8VKyOgnhNN+xkMLlQAFsU9lccUCAwEAAaOCAWAwggFcMBMG
+# A1UdJQQMMAoGCCsGAQUFBwMDMB0GA1UdDgQWBBRZcaZaM03amAeA/4Qevof5cjJB
+# 8jBRBgNVHREESjBIpEYwRDENMAsGA1UECxMETU9QUjEzMDEGA1UEBRMqMzE1OTUr
+# NGZhZjBiNzEtYWQzNy00YWEzLWE2NzEtNzZiYzA1MjM0NGFkMB8GA1UdIwQYMBaA
+# FMsR6MrStBZYAck3LjMWFrlMmgofMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9j
+# cmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY0NvZFNpZ1BDQV8w
+# OC0zMS0yMDEwLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6
+# Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljQ29kU2lnUENBXzA4LTMx
+# LTIwMTAuY3J0MA0GCSqGSIb3DQEBBQUAA4IBAQAx124qElczgdWdxuv5OtRETQie
+# 7l7falu3ec8CnLx2aJ6QoZwLw3+ijPFNupU5+w3g4Zv0XSQPG42IFTp8263Os8ls
+# ujksRX0kEVQmMA0N/0fqAwfl5GZdLHudHakQ+hywdPJPaWueqSSE2u2WoN9zpO9q
+# GqxLYp7xfMAUf0jNTbJE+fA8k21C2Oh85hegm2hoCSj5ApfvEQO6Z1Ktwemzc6bS
+# Y81K4j7k8079/6HguwITO10g3lU/o66QQDE4dSheBKlGbeb1enlAvR/N6EXVruJd
+# PvV1x+ZmY2DM1ZqEh40kMPfvNNBjHbFCZ0oOS786Du+2lTqnOOQlkgimiGaCMIIF
+# vDCCA6SgAwIBAgIKYTMmGgAAAAAAMTANBgkqhkiG9w0BAQUFADBfMRMwEQYKCZIm
+# iZPyLGQBGRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0MS0wKwYDVQQD
+# EyRNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTAwODMx
+# MjIxOTMyWhcNMjAwODMxMjIyOTMyWjB5MQswCQYDVQQGEwJVUzETMBEGA1UECBMK
+# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
+# IENvcnBvcmF0aW9uMSMwIQYDVQQDExpNaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBD
+# QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJyWVwZMGS/HZpgICBC
+# mXZTbD4b1m/My/Hqa/6XFhDg3zp0gxq3L6Ay7P/ewkJOI9VyANs1VwqJyq4gSfTw
+# aKxNS42lvXlLcZtHB9r9Jd+ddYjPqnNEf9eB2/O98jakyVxF3K+tPeAoaJcap6Vy
+# c1bxF5Tk/TWUcqDWdl8ed0WDhTgW0HNbBbpnUo2lsmkv2hkL/pJ0KeJ2L1TdFDBZ
+# +NKNYv3LyV9GMVC5JxPkQDDPcikQKCLHN049oDI9kM2hOAaFXE5WgigqBTK3S9dP
+# Y+fSLWLxRT3nrAgA9kahntFbjCZT6HqqSvJGzzc8OJ60d1ylF56NyxGPVjzBrAlf
+# A9MCAwEAAaOCAV4wggFaMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMsR6MrS
+# tBZYAck3LjMWFrlMmgofMAsGA1UdDwQEAwIBhjASBgkrBgEEAYI3FQEEBQIDAQAB
+# MCMGCSsGAQQBgjcVAgQWBBT90TFO0yaKleGYYDuoMW+mPLzYLTAZBgkrBgEEAYI3
+# FAIEDB4KAFMAdQBiAEMAQTAfBgNVHSMEGDAWgBQOrIJgQFYnl+UlE/wq4QpTlVnk
+# pDBQBgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtp
+# L2NybC9wcm9kdWN0cy9taWNyb3NvZnRyb290Y2VydC5jcmwwVAYIKwYBBQUHAQEE
+# SDBGMEQGCCsGAQUFBzAChjhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2Nl
+# cnRzL01pY3Jvc29mdFJvb3RDZXJ0LmNydDANBgkqhkiG9w0BAQUFAAOCAgEAWTk+
+# fyZGr+tvQLEytWrrDi9uqEn361917Uw7LddDrQv+y+ktMaMjzHxQmIAhXaw9L0y6
+# oqhWnONwu7i0+Hm1SXL3PupBf8rhDBdpy6WcIC36C1DEVs0t40rSvHDnqA2iA6VW
+# 4LiKS1fylUKc8fPv7uOGHzQ8uFaa8FMjhSqkghyT4pQHHfLiTviMocroE6WRTsgb
+# 0o9ylSpxbZsa+BzwU9ZnzCL/XB3Nooy9J7J5Y1ZEolHN+emjWFbdmwJFRC9f9Nqu
+# 1IIybvyklRPk62nnqaIsvsgrEA5ljpnb9aL6EiYJZTiU8XofSrvR4Vbo0HiWGFzJ
+# NRZf3ZMdSY4tvq00RBzuEBUaAF3dNVshzpjHCe6FDoxPbQ4TTj18KUicctHzbMrB
+# 7HCjV5JXfZSNoBtIA1r3z6NnCnSlNu0tLxfI5nI3EvRvsTxngvlSso0zFmUeDord
+# EN5k9G/ORtTTF+l5xAS00/ss3x+KnqwK+xMnQK3k+eGpf0a7B2BHZWBATrBC7E7t
+# s3Z52Ao0CW0cgDEf4g5U3eWh++VHEK1kmP9QFi58vwUheuKVQSdpw5OPlcmN2Jsh
+# rg1cnPCiroZogwxqLbt2awAdlq3yFnv2FoMkuYjPaqhHMS+a3ONxPdcAfmJH0c6I
+# ybgY+g5yjcGjPa8CQGr/aZuW4hCoELQ3UAjWwz0wggYHMIID76ADAgECAgphFmg0
+# AAAAAAAcMA0GCSqGSIb3DQEBBQUAMF8xEzARBgoJkiaJk/IsZAEZFgNjb20xGTAX
+# BgoJkiaJk/IsZAEZFgltaWNyb3NvZnQxLTArBgNVBAMTJE1pY3Jvc29mdCBSb290
+# IENlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0wNzA0MDMxMjUzMDlaFw0yMTA0MDMx
+# MzAzMDlaMHcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD
+# VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xITAf
+# BgNVBAMTGE1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQTCCASIwDQYJKoZIhvcNAQEB
+# BQADggEPADCCAQoCggEBAJ+hbLHf20iSKnxrLhnhveLjxZlRI1Ctzt0YTiQP7tGn
+# 0UytdDAgEesH1VSVFUmUG0KSrphcMCbaAGvoe73siQcP9w4EmPCJzB/LMySHnfL0
+# Zxws/HvniB3q506jocEjU8qN+kXPCdBer9CwQgSi+aZsk2fXKNxGU7CG0OUoRi4n
+# rIZPVVIM5AMs+2qQkDBuh/NZMJ36ftaXs+ghl3740hPzCLdTbVK0RZCfSABKR2YR
+# JylmqJfk0waBSqL5hKcRRxQJgp+E7VV4/gGaHVAIhQAQMEbtt94jRrvELVSfrx54
+# QTF3zJvfO4OToWECtR0Nsfz3m7IBziJLVP/5BcPCIAsCAwEAAaOCAaswggGnMA8G
+# A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFCM0+NlSRnAK7UD7dvuzK7DDNbMPMAsG
+# A1UdDwQEAwIBhjAQBgkrBgEEAYI3FQEEAwIBADCBmAYDVR0jBIGQMIGNgBQOrIJg
+# QFYnl+UlE/wq4QpTlVnkpKFjpGEwXzETMBEGCgmSJomT8ixkARkWA2NvbTEZMBcG
+# CgmSJomT8ixkARkWCW1pY3Jvc29mdDEtMCsGA1UEAxMkTWljcm9zb2Z0IFJvb3Qg
+# Q2VydGlmaWNhdGUgQXV0aG9yaXR5ghB5rRahSqClrUxzWPQHEy5lMFAGA1UdHwRJ
+# MEcwRaBDoEGGP2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1
+# Y3RzL21pY3Jvc29mdHJvb3RjZXJ0LmNybDBUBggrBgEFBQcBAQRIMEYwRAYIKwYB
+# BQUHMAKGOGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljcm9z
+# b2Z0Um9vdENlcnQuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMIMA0GCSqGSIb3DQEB
+# BQUAA4ICAQAQl4rDXANENt3ptK132855UU0BsS50cVttDBOrzr57j7gu1BKijG1i
+# uFcCy04gE1CZ3XpA4le7r1iaHOEdAYasu3jyi9DsOwHu4r6PCgXIjUji8FMV3U+r
+# kuTnjWrVgMHmlPIGL4UD6ZEqJCJw+/b85HiZLg33B+JwvBhOnY5rCnKVuKE5nGct
+# xVEO6mJcPxaYiyA/4gcaMvnMMUp2MT0rcgvI6nA9/4UKE9/CCmGO8Ne4F+tOi3/F
+# NSteo7/rvH0LQnvUU3Ih7jDKu3hlXFsBFwoUDtLaFJj1PLlmWLMtL+f5hYbMUVbo
+# nXCUbKw5TNT2eb+qGHpiKe+imyk0BncaYsk9Hm0fgvALxyy7z0Oz5fnsfbXjpKh0
+# NbhOxXEjEiZ2CzxSjHFaRkMUvLOzsE1nyJ9C/4B5IYCeFTBm6EISXhrIniIh0EPp
+# K+m79EjMLNTYMoBMJipIJF9a6lbvpt6Znco6b72BJ3QGEe52Ib+bgsEnVLaxaj2J
+# oXZhtG6hE6a/qkfwEm/9ijJssv7fUciMI8lmvZ0dhxJkAj0tr1mPuOQh5bWwymO0
+# eFQF1EEuUKyUsKV4q7OglnUa2ZKHE3UiLzKoCG6gW4wlv6DvhMoh1useT8ma7kng
+# 9wFlb4kLfchpyOZu6qeXzjEp/w7FW1zYTRuh2Povnj8uVRZryROj/TGCBJcwggST
+# AgEBMIGQMHkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD
+# VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xIzAh
+# BgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBAhMzAAAAsBGvCovQO5/d
+# AAEAAACwMAkGBSsOAwIaBQCggbAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQw
+# HAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFJiz
+# f4JawBv4s6ihwSKoeZTRDcAvMFAGCisGAQQBgjcCAQwxQjBAoCKAIABFAG4AdABp
+# AHQAeQAgAEYAcgBhAG0AZQB3AG8AcgBroRqAGGh0dHA6Ly9tc2RuLmNvbS9kYXRh
+# L2VmIDANBgkqhkiG9w0BAQEFAASCAQBl1eyDt2dp8f759lxqbnnQy+TYCdsEAqxP
+# 5AY0A38rcH28zRXOGRwxLo1o7uwmP9WFgmBvTa5yvDLVXI9OPsQ2yy1ugJT9GLro
+# l2v6TbtUikmli9JQ1cMXAQKCvJWr7q8pie9Xlv/Kf2hD/KdxqACw/O+wXVu43cZq
+# ewAUd4OsKQ5kWTalsog9sIQ9NoggMVDGwPQc4F/da9LwXaL9hwl+8J0l2V5TZefk
+# X5Hxsae0Souw8RR+u55r3OMyGxX4jANDVpsMzVh3bmNwsq0OaNtJ5WXx/1R5+72D
+# yZQPi+wpjcSn8oDJEhCAvNT/jzX6NsxbnZr3fxEn8MfMB5BmkInAoYICKDCCAiQG
+# CSqGSIb3DQEJBjGCAhUwggIRAgEBMIGOMHcxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
+# EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3Nv
+# ZnQgQ29ycG9yYXRpb24xITAfBgNVBAMTGE1pY3Jvc29mdCBUaW1lLVN0YW1wIFBD
+# QQITMwAAADPlJ4ajDkoqgAAAAAAAMzAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkD
+# MQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTQwMjI1MDkzMTQ0WjAjBgkq
+# hkiG9w0BCQQxFgQU/5ZEGkCagXUs+tIh1LXCDL6NUJYwDQYJKoZIhvcNAQEFBQAE
+# ggEANSpyNTX7NdJBPbN9svcIBJnwNTQQiryC5w9GrAlOuwlPWai0x6Ezqx/yvB2L
+# PHAkZ7Es9kQMg0QjUqCKfdpsSG10gYK55zbmjkJm8EV/rwMSirUozPtmnrY6jQ+N
+# ZgAYRye9H7corGvAWFcRa6i8oWukatRSyXSBNeBq9u0jzORigUHabm7QMQhPROxv
+# P8IP7Ni7vd8Bmkm710WOU8bG+lV+9ORpqUW5UNKe3Q6QWud8Bsx+2lPQHaosM5tZ
+# wBKJ23vk7BmT/8J8mmhzFkYSf62XkZmACHmDBC6/24j/1cA1qNV4ZgtQ4UQ1ufAl
+# aFXS0Rbdkg481ywIYNBNARRQUA==
+# SIG # End signature block

BIN
Fork.Net/packages/EntityFramework.6.1.0/tools/migrate.exe