Browse Source

init

master
yibo 7 years ago
commit
9d3e93c240
276 changed files with 260282 additions and 0 deletions
  1. +6
    -0
      .gitignore
  2. +22
    -0
      ButcherTraceBack.sln
  3. +23
    -0
      ButcherTraceBack/App_Start/RouteConfig.cs
  4. +19
    -0
      ButcherTraceBack/App_Start/WebApiConfig.cs
  5. +171
    -0
      ButcherTraceBack/ButcherTraceBack.csproj
  6. +29
    -0
      ButcherTraceBack/Controllers/CodeViewController.cs
  7. +24
    -0
      ButcherTraceBack/Controllers/FreshViewController.cs
  8. +140
    -0
      ButcherTraceBack/Controllers/SqlHelper.cs
  9. +54
    -0
      ButcherTraceBack/Controllers/TraceBackInfoController.cs
  10. +1
    -0
      ButcherTraceBack/Global.asax
  11. +21
    -0
      ButcherTraceBack/Global.asax.cs
  12. +54
    -0
      ButcherTraceBack/Models/FreshTraceBack.cs
  13. +36
    -0
      ButcherTraceBack/Models/IWithCode.cs
  14. +69
    -0
      ButcherTraceBack/Models/TraceBackInfo.cs
  15. +35
    -0
      ButcherTraceBack/Properties/AssemblyInfo.cs
  16. +17
    -0
      ButcherTraceBack/Properties/PublishProfiles/ButcherTraceBack.pubxml
  17. +65
    -0
      ButcherTraceBack/Views/CodeView/Index - s.cshtml
  18. +84
    -0
      ButcherTraceBack/Views/CodeView/Index.cshtml
  19. +84
    -0
      ButcherTraceBack/Views/FreshView/Index.cshtml
  20. +58
    -0
      ButcherTraceBack/Views/Web.config
  21. +68
    -0
      ButcherTraceBack/WFWhiteTraceSystem.html
  22. +30
    -0
      ButcherTraceBack/Web.Debug.config
  23. +31
    -0
      ButcherTraceBack/Web.Release.config
  24. +48
    -0
      ButcherTraceBack/Web.config
  25. +76
    -0
      ButcherTraceBack/css/lrtk.css
  26. BIN
      ButcherTraceBack/images.rar
  27. BIN
      ButcherTraceBack/images/wanfu01.jpg
  28. BIN
      ButcherTraceBack/images/wanfu02.jpg
  29. BIN
      ButcherTraceBack/images/wanfu03.jpg
  30. BIN
      ButcherTraceBack/images/wanfu04.jpg
  31. BIN
      ButcherTraceBack/images/wanfu05.jpg
  32. BIN
      ButcherTraceBack/images/wanfu06.jpg
  33. BIN
      ButcherTraceBack/images/wanfu07.jpg
  34. BIN
      ButcherTraceBack/images/wanfu08.jpg
  35. BIN
      ButcherTraceBack/images/wanfu09.jpg
  36. +1
    -0
      ButcherTraceBack/js/jflex.js
  37. +10244
    -0
      ButcherTraceBack/js/jquery-3.2.0.js
  38. +59
    -0
      CreateTable.sql
  39. +5
    -0
      packages/EntityFramework.5.0.0/Content/App.config.transform
  40. +5
    -0
      packages/EntityFramework.5.0.0/Content/Web.config.transform
  41. BIN
      packages/EntityFramework.5.0.0/EntityFramework.5.0.0.nupkg
  42. BIN
      packages/EntityFramework.5.0.0/lib/net40/EntityFramework.dll
  43. +18061
    -0
      packages/EntityFramework.5.0.0/lib/net40/EntityFramework.xml
  44. BIN
      packages/EntityFramework.5.0.0/lib/net40/zh-Hans/EntityFramework.resources.dll
  45. +5536
    -0
      packages/EntityFramework.5.0.0/lib/net40/zh-Hans/EntityFramework.xml
  46. BIN
      packages/EntityFramework.5.0.0/lib/net45/EntityFramework.dll
  47. +17968
    -0
      packages/EntityFramework.5.0.0/lib/net45/EntityFramework.xml
  48. BIN
      packages/EntityFramework.5.0.0/lib/net45/zh-Hans/EntityFramework.resources.dll
  49. +5536
    -0
      packages/EntityFramework.5.0.0/lib/net45/zh-Hans/EntityFramework.xml
  50. BIN
      packages/EntityFramework.5.0.0/tools/EntityFramework.PS3.psd1
  51. BIN
      packages/EntityFramework.5.0.0/tools/EntityFramework.PowerShell.Utility.dll
  52. BIN
      packages/EntityFramework.5.0.0/tools/EntityFramework.PowerShell.dll
  53. BIN
      packages/EntityFramework.5.0.0/tools/EntityFramework.psd1
  54. +777
    -0
      packages/EntityFramework.5.0.0/tools/EntityFramework.psm1
  55. +18
    -0
      packages/EntityFramework.5.0.0/tools/Redirect.VS11.config
  56. +14
    -0
      packages/EntityFramework.5.0.0/tools/Redirect.config
  57. +30
    -0
      packages/EntityFramework.5.0.0/tools/about_EntityFramework.help.txt
  58. +176
    -0
      packages/EntityFramework.5.0.0/tools/init.ps1
  59. +170
    -0
      packages/EntityFramework.5.0.0/tools/install.ps1
  60. BIN
      packages/EntityFramework.5.0.0/tools/migrate.exe
  61. BIN
      packages/EntityFramework.zh-Hans.5.0.0/EntityFramework.zh-Hans.5.0.0.nupkg
  62. BIN
      packages/EntityFramework.zh-Hans.5.0.0/lib/net40/zh-Hans/EntityFramework.resources.dll
  63. +5536
    -0
      packages/EntityFramework.zh-Hans.5.0.0/lib/net40/zh-Hans/EntityFramework.xml
  64. BIN
      packages/EntityFramework.zh-Hans.5.0.0/lib/net45/zh-Hans/EntityFramework.resources.dll
  65. +5536
    -0
      packages/EntityFramework.zh-Hans.5.0.0/lib/net45/zh-Hans/EntityFramework.xml
  66. BIN
      packages/Microsoft.AspNet.Mvc.4.0.30506.0/Microsoft.AspNet.Mvc.4.0.30506.0.nupkg
  67. BIN
      packages/Microsoft.AspNet.Mvc.4.0.30506.0/lib/net40/System.Web.Mvc.dll
  68. +10254
    -0
      packages/Microsoft.AspNet.Mvc.4.0.30506.0/lib/net40/System.Web.Mvc.xml
  69. BIN
      packages/Microsoft.AspNet.Mvc.4.0.30506.0/lib/net40/zh-Hans/System.Web.Mvc.resources.dll
  70. +10545
    -0
      packages/Microsoft.AspNet.Mvc.4.0.30506.0/lib/net40/zh-Hans/System.Web.Mvc.xml
  71. BIN
      packages/Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0/Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0.nupkg
  72. BIN
      packages/Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0/lib/net40/Microsoft.Web.Mvc.FixedDisplayModes.dll
  73. BIN
      packages/Microsoft.AspNet.Mvc.zh-Hans.4.0.30506.0/Microsoft.AspNet.Mvc.zh-Hans.4.0.30506.0.nupkg
  74. BIN
      packages/Microsoft.AspNet.Mvc.zh-Hans.4.0.30506.0/lib/net40/zh-Hans/System.Web.Mvc.resources.dll
  75. +10545
    -0
      packages/Microsoft.AspNet.Mvc.zh-Hans.4.0.30506.0/lib/net40/zh-Hans/System.Web.Mvc.xml
  76. BIN
      packages/Microsoft.AspNet.Providers.Core.1.2/Microsoft.AspNet.Providers.Core.1.2.nupkg
  77. BIN
      packages/Microsoft.AspNet.Providers.Core.1.2/lib/net40/System.Web.Providers.dll
  78. BIN
      packages/Microsoft.AspNet.Providers.Core.1.2/lib/net40/zh-Hans/System.Web.Providers.resources.dll
  79. +377
    -0
      packages/Microsoft.AspNet.Providers.Core.1.2/readme.html
  80. BIN
      packages/Microsoft.AspNet.Providers.Core.zh-Hans.1.2/Microsoft.AspNet.Providers.Core.zh-Hans.1.2.nupkg
  81. BIN
      packages/Microsoft.AspNet.Providers.Core.zh-Hans.1.2/lib/net40/zh-Hans/System.Web.Providers.resources.dll
  82. BIN
      packages/Microsoft.AspNet.Providers.LocalDB.1.1/Microsoft.AspNet.Providers.LocalDB.1.1.nupkg
  83. +33
    -0
      packages/Microsoft.AspNet.Providers.LocalDB.1.1/content/web.config.transform
  84. +211
    -0
      packages/Microsoft.AspNet.Providers.LocalDB.1.1/tools/Install.ps1
  85. BIN
      packages/Microsoft.AspNet.Razor.2.0.30506.0/Microsoft.AspNet.Razor.2.0.30506.0.nupkg
  86. BIN
      packages/Microsoft.AspNet.Razor.2.0.30506.0/lib/net40/System.Web.Razor.dll
  87. +4359
    -0
      packages/Microsoft.AspNet.Razor.2.0.30506.0/lib/net40/System.Web.Razor.xml
  88. BIN
      packages/Microsoft.AspNet.Razor.2.0.30506.0/lib/net40/zh-Hans/System.Web.Razor.resources.dll
  89. +4359
    -0
      packages/Microsoft.AspNet.Razor.2.0.30506.0/lib/net40/zh-Hans/system.web.razor.xml
  90. BIN
      packages/Microsoft.AspNet.Razor.zh-Hans.2.0.30506.0/Microsoft.AspNet.Razor.zh-Hans.2.0.30506.0.nupkg
  91. BIN
      packages/Microsoft.AspNet.Razor.zh-Hans.2.0.30506.0/lib/net40/zh-Hans/System.Web.Razor.resources.dll
  92. +4359
    -0
      packages/Microsoft.AspNet.Razor.zh-Hans.2.0.30506.0/lib/net40/zh-Hans/system.web.razor.xml
  93. BIN
      packages/Microsoft.AspNet.Web.Optimization.1.0.0/Microsoft.AspNet.Web.Optimization.1.0.0.nupkg
  94. BIN
      packages/Microsoft.AspNet.Web.Optimization.1.0.0/lib/net40/System.Web.Optimization.dll
  95. BIN
      packages/Microsoft.AspNet.Web.Optimization.1.0.0/lib/net40/zh-Hans/System.Web.Optimization.resources.dll
  96. BIN
      packages/Microsoft.AspNet.Web.Optimization.zh-Hans.1.0.0/Microsoft.AspNet.Web.Optimization.zh-Hans.1.0.0.nupkg
  97. BIN
      packages/Microsoft.AspNet.Web.Optimization.zh-Hans.1.0.0/lib/net40/zh-Hans/System.Web.Optimization.resources.dll
  98. BIN
      packages/Microsoft.AspNet.WebApi.4.0.30506.0/Microsoft.AspNet.WebApi.4.0.30506.0.nupkg
  99. BIN
      packages/Microsoft.AspNet.WebApi.Client.4.0.30506.0/Microsoft.AspNet.WebApi.Client.4.0.30506.0.nupkg
  100. BIN
      packages/Microsoft.AspNet.WebApi.Client.4.0.30506.0/lib/net40/System.Net.Http.Formatting.dll

+ 6
- 0
.gitignore View File

@ -0,0 +1,6 @@
.*
*.user
*.suo
*.tmp
bin
obj

+ 22
- 0
ButcherTraceBack.sln View File

@ -0,0 +1,22 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.40629.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ButcherTraceBack", "ButcherTraceBack\ButcherTraceBack.csproj", "{509E5360-681E-4422-B457-9B47BDF80B17}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{509E5360-681E-4422-B457-9B47BDF80B17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{509E5360-681E-4422-B457-9B47BDF80B17}.Debug|Any CPU.Build.0 = Debug|Any CPU
{509E5360-681E-4422-B457-9B47BDF80B17}.Release|Any CPU.ActiveCfg = Release|Any CPU
{509E5360-681E-4422-B457-9B47BDF80B17}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

+ 23
- 0
ButcherTraceBack/App_Start/RouteConfig.cs View File

@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace ButcherTraceBack
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "CodeView", action = "Index", id = UrlParameter.Optional }
);
}
}
}

+ 19
- 0
ButcherTraceBack/App_Start/WebApiConfig.cs View File

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace ButcherTraceBack
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}

+ 171
- 0
ButcherTraceBack/ButcherTraceBack.csproj View File

@ -0,0 +1,171 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.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>
<ProductVersion>
</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{509E5360-681E-4422-B457-9B47BDF80B17}</ProjectGuid>
<ProjectTypeGuids>{E3E379DF-F4C6-4180-9B81-6769533ABE47};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ButcherTraceBack</RootNamespace>
<AssemblyName>ButcherTraceBack</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
<UseIISExpress>true</UseIISExpress>
<IISExpressSSLPort />
<IISExpressAnonymousAuthentication />
<IISExpressWindowsAuthentication />
<IISExpressUseClassicPipelineMode />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=4.0.3.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Web.Optimization">
<HintPath>..\..\web1\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
<Reference Include="System.Configuration" />
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
</Reference>
<Reference Include="System.Net.Http">
<Private>True</Private>
<HintPath>..\packages\Microsoft.Net.Http.2.0.30506.0\lib\net40\System.Net.Http.dll</HintPath>
</Reference>
<Reference Include="System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Core.4.0.30506.0\lib\net40\System.Web.Http.dll</HintPath>
</Reference>
<Reference Include="System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.WebHost.4.0.30506.0\lib\net40\System.Web.Http.WebHost.dll</HintPath>
</Reference>
<Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll</HintPath>
</Reference>
<Reference Include="System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.Razor.2.0.30506.0\lib\net40\System.Web.Razor.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages.Deployment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Deployment.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Razor.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Controllers\CodeViewController.cs" />
<Compile Include="Controllers\FreshViewController.cs" />
<Compile Include="Controllers\SqlHelper.cs" />
<Compile Include="Controllers\TraceBackInfoController.cs" />
<Compile Include="Global.asax.cs">
<DependentUpon>Global.asax</DependentUpon>
</Compile>
<Compile Include="Models\FreshTraceBack.cs" />
<Compile Include="Models\IWithCode.cs" />
<Compile Include="Models\TraceBackInfo.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="App_Start\RouteConfig.cs" />
<Compile Include="App_Start\WebApiConfig.cs" />
<Content Include="css\lrtk.css" />
<Content Include="Global.asax" />
<Content Include="images\wanfu09.jpg" />
<Content Include="images\wanfu01.jpg" />
<Content Include="images\wanfu02.jpg" />
<Content Include="images\wanfu03.jpg" />
<Content Include="images\wanfu04.jpg" />
<Content Include="images\wanfu05.jpg" />
<Content Include="images\wanfu06.jpg" />
<Content Include="images\wanfu07.jpg" />
<Content Include="images\wanfu08.jpg" />
<Content Include="js\jflex.js" />
<Content Include="js\jquery-3.2.0.js" />
<Content Include="Web.config" />
<Content Include="Web.Debug.config">
<DependentUpon>Web.config</DependentUpon>
</Content>
<Content Include="Web.Release.config">
<DependentUpon>Web.config</DependentUpon>
</Content>
<Content Include="Views\Web.config" />
<Content Include="WFWhiteTraceSystem.html" />
</ItemGroup>
<ItemGroup>
<None Include="Properties\PublishProfiles\ButcherTraceBack.pubxml" />
<Content Include="Views\CodeView\Index - s.cshtml" />
<Content Include="Views\FreshView\Index.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\CodeView\Index.cshtml" />
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
<ProjectExtensions>
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
<UseIIS>True</UseIIS>
<AutoAssignPort>True</AutoAssignPort>
<DevelopmentServerPort>33904</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>http://localhost:33904/</IISUrl>
<NTLMAuthentication>False</NTLMAuthentication>
<UseCustomServer>False</UseCustomServer>
<CustomServerUrl>
</CustomServerUrl>
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties>
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
<!-- 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>

+ 29
- 0
ButcherTraceBack/Controllers/CodeViewController.cs View File

@ -0,0 +1,29 @@
using ButcherTraceBack.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace ButcherTraceBack.Controllers
{
public class CodeViewController : Controller
{
public ActionResult Index(string code)
{
if (code != null && code.Length == 22)
{
return RedirectToAction("Index", "FreshView", new { code = code });
}
TraceBackInfo info = SqlHelper<TraceBackInfo>.Query(code);
if (info == null)
{
info = new TraceBackInfo();
}
else if (info.Code != null && info.Code.Length >= 12)
info.Code = info.Code.Substring(info.Code.Length - 6, 6);
return View(info);
}
}
}

+ 24
- 0
ButcherTraceBack/Controllers/FreshViewController.cs View File

@ -0,0 +1,24 @@
using ButcherTraceBack.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace ButcherTraceBack.Controllers
{
public class FreshViewController : Controller
{
public ActionResult Index(string code)
{
FreshTraceBack info = SqlHelper<FreshTraceBack>.Query(code);
if (info == null)
{
info = new FreshTraceBack();
}
else if (info.Code != null && info.Code.Length >= 10)
info.Code = info.Code.Substring(info.Code.Length - 5, 5);
return View(info);
}
}
}

+ 140
- 0
ButcherTraceBack/Controllers/SqlHelper.cs View File

@ -0,0 +1,140 @@
using ButcherTraceBack.Models;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
namespace ButcherTraceBack.Controllers
{
public static class SqlHelper<T>
where T : IWithCode, new()
{
private static readonly string SqlConnectionString = ConfigurationManager.ConnectionStrings["DbConnection"].ToString();
public static T Query(string code)
{
if (string.IsNullOrEmpty(code))
return new T() { Code = "二维码无效" };
var type = typeof(T);
var tableName = GetTableName(type);
using (var dbConnection = new SqlConnection(SqlConnectionString))
{
dbConnection.Open();
var sql = string.Format("select * from [{0}] where Code=@code", tableName);
var cmd = new SqlCommand(sql, dbConnection);
cmd.Parameters.Add(new SqlParameter("@code", code));
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
var entity = new T();
foreach (var p in type.GetProperties())
{
var v = reader[p.Name];
if (v.GetType().Name.ToLower() != "dbnull")
p.SetValue(entity, reader[p.Name], null);
}
return entity;
}
}
}
return new T();
}
public static string BatchInsert(List<T> infos,params string[] fields)
{
var tableName = GetTableName();
using (var dbConnection = new SqlConnection(SqlConnectionString))
{
dbConnection.Open();
var transaction = dbConnection.BeginTransaction();
try
{
foreach (T info in infos)
UpdateOrInsert(transaction, info, tableName, fields);
transaction.Commit();
return null;
}
catch (Exception e)
{
transaction.Rollback();
return e.Message;
}
}
}
static string GetTableName(Type type = null)
{
if (type == null)
type = typeof(T);
var tableName = MapToTableAttribute.GetTableName(type);
if (string.IsNullOrEmpty(tableName))
throw new Exception("类型未识别映射表");
return tableName;
}
static bool Exist(SqlTransaction transaction, string code, string tableName)
{
var selectSql = string.Format("select top(1) code from [{0}] where [Code]=@code", tableName);
var queryCmd = new SqlCommand(selectSql, transaction.Connection, transaction);
queryCmd.Parameters.Add(new SqlParameter("@code", code));
return queryCmd.ExecuteScalar() != null;
}
static int Update(SqlTransaction transaction, Type type, T info, string code,string tableName, params string[] fields)
{
if (fields.Length == 0)
return 0;
var updateSql = string.Format("UPDATE [{0}] SET {1} where [Code]=@wCode", tableName, string.Join(",", fields.Select(x => string.Format("[{0}] = @{0}", x))));
var updateCmd = new SqlCommand(updateSql, transaction.Connection, transaction);
foreach (var item in fields)
{
object obj;
var v = type.GetProperty(item).GetValue(info, null);
if (v == null)
obj = System.DBNull.Value;
else
obj = v;
updateCmd.Parameters.Add(new SqlParameter("@" + item, obj));
}
updateCmd.Parameters.Add(new SqlParameter("@wCode", info.Code));
return updateCmd.ExecuteNonQuery();
}
static void Insert(SqlTransaction transaction, Type type, T info,string tableName, params string[] fields)
{
var insertSql = string.Format("INSERT INTO [{0}]({1}) VALUES({2})", tableName, string.Join(",", fields.Select(x => string.Format("[{0}]", x))), string.Join(",", fields.Select(x => "@" + x)));
var insertCmd = new SqlCommand(insertSql, transaction.Connection, transaction);
foreach (var item in fields)
{
object obj;
var v = type.GetProperty(item).GetValue(info, null);
if (v == null)
obj = System.DBNull.Value;
else
obj = v;
insertCmd.Parameters.Add(new SqlParameter("@" + item, obj));
}
insertCmd.ExecuteNonQuery();
}
static void UpdateOrInsert(SqlTransaction transaction, T info, string tableName, params string[] fields)
{
var type = info.GetType();
var exist = Exist(transaction, info.Code, tableName);
if (exist)
{
var upFiles = fields.Where(x => x != "Code").ToArray();
Update(transaction, type, info, info.Code, tableName, upFiles);
}
else
{
Insert(transaction, type, info, tableName, fields);
}
}
}
}

+ 54
- 0
ButcherTraceBack/Controllers/TraceBackInfoController.cs View File

@ -0,0 +1,54 @@
using ButcherTraceBack.Models;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace ButcherTraceBack.Controllers
{
public class TraceBackInfoController : ApiController
{
public string ButcherInsert([System.Web.Http.FromBody]string json)
{
var fields = new string[] { "Code", "Goods_Name", "ProductDate", "ExpirationTime", "ProductCompany", "CompanyAddress", "CompanyTel", "PigFarmAddress", "TestingNo", "TestingResult", "TestingMan", "Farmer", "ButcherBatch", "ButcherTime" };
return UpdateOrInsert(json, fields);
}
public string InsertSaleOutStore([System.Web.Http.FromBody]string json)
{
return UpdateOrInsert(json, "Code", "SendDate", "SendCustomer", "CarNo");
}
public string InsertInStore([System.Web.Http.FromBody]string json)
{
return UpdateOrInsert(json, "Code", "InStoreDate");
}
string UpdateOrInsert(string json, params string[] fields)
{
var infos = JsonConvert.DeserializeObject<List<TraceBackInfo>>(json);
return SqlHelper<TraceBackInfo>.BatchInsert(infos, fields);
}
public string SegmentInsert([System.Web.Http.FromBody]string json)
{
var fields = new string[] { "Code", "Goods_Name", "Goods_Spec", "Weight", "ButcherDate", "ProductDate", "Farm_Name", "TestingResult", "TestingMan", "ProductBatch", "InStoreDate", "SendCustomer" };
return SegmentUpdateOrInsert(json, fields);
}
public string SegmentInsertSaleOutStore([System.Web.Http.FromBody]string json)
{
return SegmentUpdateOrInsert(json, "Code", "SendDate", "SendCustomer", "CarNo");
}
string SegmentUpdateOrInsert(string json, params string[] fields)
{
var infos = JsonConvert.DeserializeObject<List<FreshTraceBack>>(json);
return SqlHelper<FreshTraceBack>.BatchInsert(infos, fields);
}
}
}

+ 1
- 0
ButcherTraceBack/Global.asax View File

@ -0,0 +1 @@
<%@ Application Codebehind="Global.asax.cs" Inherits="ButcherTraceBack.MvcApplication" Language="C#" %>

+ 21
- 0
ButcherTraceBack/Global.asax.cs View File

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Routing;
namespace ButcherTraceBack
{
// 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,
// 请访问 http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
WebApiConfig.Register(GlobalConfiguration.Configuration);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
}
}

+ 54
- 0
ButcherTraceBack/Models/FreshTraceBack.cs View File

@ -0,0 +1,54 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace ButcherTraceBack.Models
{
[MapToTable("FreshTraceBack")]
public class FreshTraceBack : IWithCode
{
//[LogicName("条码")]
public string Code { get; set; }
//[LogicName("产品名称")]
public string Goods_Name { get; set; }
//[LogicName("规格")]
public string Goods_Spec { get; set; }
//[LogicName("重量")]
public string Weight { get; set; }
//[LogicName("屠宰日期日期")]
public string ButcherDate { get; set; }
//[LogicName("生产日期")]
public string ProductDate { get; set; }
//[LogicName("养殖场")]
public string Farm_Name { get; set; }
//[LogicName("检验结果")]
public string TestingResult { get; set; }
//[LogicName("检验人员")]
public string TestingMan { get; set; }
//[LogicName("生产批次")]
public string ProductBatch { get; set; }
//[LogicName("入库日期")]
public string InStoreDate { get; set; }
//[LogicName("发货时间")]
public string SendDate { get; set; }
//[LogicName("发货客户")]
public string SendCustomer { get; set; }
//[LogicName("货运车牌")]
public string CarNo { get; set; }
}
}

+ 36
- 0
ButcherTraceBack/Models/IWithCode.cs View File

@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace ButcherTraceBack.Models
{
public interface IWithCode
{
string Code { get; set; }
}
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
public class MapToTableAttribute : Attribute
{
string mTableName;
public string TableName {
get {
return mTableName;
}
}
public MapToTableAttribute(string field) {
mTableName = field;
}
public static string GetTableName(Type t)
{
var att = t.GetCustomAttributes(typeof(MapToTableAttribute), false);
if (att.Length == 0)
return null;
return (att[0] as MapToTableAttribute).TableName;
}
}
}

+ 69
- 0
ButcherTraceBack/Models/TraceBackInfo.cs View File

@ -0,0 +1,69 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace ButcherTraceBack.Models
{
[MapToTable("CarcassTraceInfo")]
public class TraceBackInfo : IWithCode
{
//[LogicName("条码")]
public string Code { get; set; }
#region BasicInfo 6
//[LogicName("产品名称")]
public string Goods_Name { get; set; }
//[LogicName("生产日期")]
public string ProductDate { get; set; }
//[LogicName("保质期")]
public string ExpirationTime { get; set; }
//[LogicName("生产厂家")]
public string ProductCompany { get; set; }
//[LogicName("生产厂址")]
public string CompanyAddress { get; set; }
//[LogicName("电话")]
public string CompanyTel { get; set; }
#endregion
#region TraceBackInfo 11
//[LogicName("生猪产地")]
public string PigFarmAddress { get; set; }
//[LogicName("动检证号")]
public string TestingNo { get; set; }
//[LogicName("动检结果")]
public string TestingResult { get; set; }
//[LogicName("动检人员")]
public string TestingMan { get; set; }
//[LogicName("养殖户")]
public string Farmer { get; set; }
//[LogicName("屠宰批次")]
public string ButcherBatch { get; set; }
//[LogicName("屠宰时间")]
public string ButcherTime { get; set; }
//[LogicName("入库时间")]
public string InStoreDate { get; set; }
//[LogicName("发货时间")]
public string SendDate { get; set; }
//[LogicName("发货客户")]
public string SendCustomer { get; set; }
//[LogicName("货运车牌")]
public string CarNo { get; set; }
#endregion
}
}

+ 35
- 0
ButcherTraceBack/Properties/AssemblyInfo.cs View File

@ -0,0 +1,35 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的常规信息通过下列特性集
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("ButcherTraceBack")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ButcherTraceBack")]
[assembly: AssemblyCopyright("版权所有(C) 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的某个类型,
// 请针对该类型将 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("2741d4a9-a5c3-4457-a11b-b59b416eb830")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 内部版本号
// 修订号
//
// 可以指定所有这些值,也可以使用“修订号”和“内部版本号”的默认值,
// 方法是按如下所示使用“*”:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

+ 17
- 0
ButcherTraceBack/Properties/PublishProfiles/ButcherTraceBack.pubxml View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
您 Web 项目的发布/打包进程将使用此文件。您可以通过编辑此 MSBuild 文件
来自定义该进程的行为。若要了解与此相关的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkID=208121。
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<publishUrl>C:\360WiFi\ButcherTraceBack</publishUrl>
<DeleteExistingFiles>False</DeleteExistingFiles>
</PropertyGroup>
</Project>

+ 65
- 0
ButcherTraceBack/Views/CodeView/Index - s.cshtml View File

@ -0,0 +1,65 @@
@model ButcherTraceBack.Models.TraceBackInfo
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>追溯信息 @Model.Code</title>
<style>
body {
background-color: white;
}
div {
font-size: 15px;
padding-bottom: 5px;
}
h2 {
font-size: 20px;
color: red;
padding-bottom: 5px;
}
table {
padding-left: 5px;
padding-top: 5px;
}
</style>
</head>
<body>
<div>
<h2 style="font-size:25px">白条追溯信息</h2>
<h2>肉品编码</h2>
<div>@Model.Code</div>
<h2>基础信息</h2>
<div>产品名称:@Model.Goods_Name</div>
<div>生产日期:@Model.ProductDate</div>
<div>保 质 期:@Model.ExpirationTime</div>
<div>生产厂家:@Model.ProductCompany</div>
<div>生产厂址:@Model.CompanyAddress</div>
<div>电&nbsp;&nbsp;&nbsp; 话:@Model.CompanyTel</div>
<h2>追溯信息</h2>
<div>生猪产地:@Model.PigFarmAddress</div>
<div>动检证号:@Model.TestingNo</div>
<div>动检结果:@Model.TestingResult</div>
<div>动检人员:@Model.TestingMan</div>
<div>养 殖 户:@Model.Farmer</div>
<div>屠宰批次:@Model.ButcherBatch</div>
<div>屠宰时间:@Model.ButcherTime</div>
<div>入库时间:@Model.InStoreDate</div>
<div>发货时间:@Model.SendDate</div>
<div>发货客户:@Model.SendCustomer</div>
<div>货运车牌:@Model.CarNo</div>
</div>
</body>
</html>

+ 84
- 0
ButcherTraceBack/Views/CodeView/Index.cshtml View File

@ -0,0 +1,84 @@
@model ButcherTraceBack.Models.TraceBackInfo
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes" />
<title>追溯信息 @Model.Code</title>
<link href="css/lrtk.css" rel="stylesheet" />
<script src="js/jquery-3.2.0.js"></script>
</head>
<body>
<div class="flex">
<ul class="slides">
<li>
<img src="images/wanfu01.jpg">
</li>
<li>
<div style="position:relative;width:100%;height:100%;">
<img src="images/wanfu02.jpg">
<p style="position: absolute; left:10%;bottom:10%;">
商品名称: @Model.Goods_Name
</p>
<p style="position: absolute; left:10%;bottom:5%;">生产日期: @Model.SendDate</p>
</div>
</li>
<li>
<img src="images/wanfu03.jpg">
</li>
<li>
<img src="images/wanfu04.jpg">
</li>
<li>
<img src="images/wanfu05.jpg">
</li>
<li>
<img src="images/wanfu06.jpg">
</li>
<li>
<div style="position:relative;width:100%;height:100%;">
<img src="images/wanfu07.jpg">
<p style="position: absolute; left:10%;bottom:8%;">检验日期: @Model.SendDate</p>
</div>
</li>
<li>
<div style="position:relative;width:100%;height:100%;">
<img src="images/wanfu08.jpg">
<p style="position: absolute; left:10%;bottom:8%;">出厂日期: @Model.SendDate</p>
</div>
</li>
<li>
<div style="position:relative;width:100%;height:100%;">
<img src="images/wanfu09.jpg">
<table style="position:absolute; left:5%;top:28%;line-height:26px">
<tr><td>生猪产地:@Model.PigFarmAddress </td></tr>
<tr><td>动检证号:@Model.TestingNo </td></tr>
<tr><td>动检结果:@Model.TestingResult </td></tr>
<tr><td>动检人员:@Model.TestingMan </td></tr>
<tr><td>养 殖 户:@Model.Farmer </td></tr>
<tr><td>生猪定点屠宰代码:260912011</td></tr>
<tr><td>屠宰批次:@Model.ButcherBatch </td></tr>
<tr><td>发货客户:@Model.SendCustomer </td></tr>
<tr><td>货运车牌:@Model.CarNo </td></tr>
</table>
@*</p>*@
</div>
</li>
</ul>
</div>
<script src="js/jflex.js"></script>
<script type="text/javascript">
$('.flex').jFlex({
autoplay: true
});
</script>
</body>
</html>

+ 84
- 0
ButcherTraceBack/Views/FreshView/Index.cshtml View File

@ -0,0 +1,84 @@
@model ButcherTraceBack.Models.FreshTraceBack
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes" />
<title>追溯信息 @Model.Code</title>
<link href="css/lrtk.css" rel="stylesheet" />
<script src="js/jquery-3.2.0.js"></script>
</head>
<body>
<div class="flex">
<ul class="slides">
<li>
<img src="images/wanfu01.jpg">
</li>
<li>
<div style="position:relative;width:100%;height:100%;">
<img src="images/wanfu02.jpg">
<p style="position: absolute; left:10%;bottom:10%;">
<span>商品名称: @Model.Goods_Name</span><span style="padding-left:30px;">规格:@Model.Goods_Spec</span>
</p>
<p style="position: absolute; left:10%;bottom:5%;">
<span>重量:@Model.Weight KG</span><span style="padding-left:30px;">生产日期: @Model.ProductDate</span>
</p>
</div>
</li>
<li>
<img src="images/wanfu03.jpg">
</li>
<li>
<img src="images/wanfu04.jpg">
</li>
<li>
<img src="images/wanfu05.jpg">
</li>
<li>
<img src="images/wanfu06.jpg">
</li>
<li>
<div style="position:relative;width:100%;height:100%;">
<img src="images/wanfu07.jpg">
<p style="position: absolute; left:10%;bottom:8%;">检验日期: @Model.ProductDate</p>
</div>
</li>
<li>
<div style="position:relative;width:100%;height:100%;">
<img src="images/wanfu08.jpg">
@*<p style="position: absolute; left:10%;bottom:8%;">出厂日期: @Model.SendDate</p>*@
</div>
</li>
<li>
<div style="position:relative;width:100%;height:100%;">
<img src="images/wanfu09.jpg">
<table style="position:absolute; left:5%;top:28%;line-height:26px">
<tr><td>养 殖 场:@Model.Farm_Name </td></tr>
<tr><td>动检结果:@Model.TestingResult </td></tr>
<tr><td>动检人员:@Model.TestingMan </td></tr>
<tr><td>屠宰日期:@Model.ButcherDate </td></tr>
@*<tr><td>生产批次:@Model.ProductBatch </td></tr>*@
<tr><td>入库日期:@Model.InStoreDate </td></tr>
@*<tr><td>发货时间:@Model.SendDate </td></tr>*@
<tr><td>发货客户:@Model.SendCustomer </td></tr>
@*<tr><td>货运车牌:@Model.CarNo </td></tr>*@
</table>
</div>
</li>
</ul>
</div>
<script src="js/jflex.js"></script>
<script type="text/javascript">
$('.flex').jFlex({
autoplay: true
});
</script>
</body>
</html>

+ 58
- 0
ButcherTraceBack/Views/Web.config View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<!--
在视图页面中启用请求验证将导致验证在
控制器已对输入进行处理后发生。默认情况下,
MVC 在控制器处理输入前执行请求验证。
若要更改此行为,请对控制器或操作
应用 ValidateInputAttribute。
-->
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>

+ 68
- 0
ButcherTraceBack/WFWhiteTraceSystem.html View File

@ -0,0 +1,68 @@
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes" />
<title>青岛万福食品股份有限公司流通追溯平台</title>
<link href="css/lrtk.css" rel="stylesheet" />
<script src="js/jquery-3.2.0.js"></script>
</head>
<body>
<!-- 代码 开始 -->
<div class="flex">
<ul class="slides">
<li>
<img src="images/01.jpg">
</li>
<li>
<div style="position:relative;width:100%;height:100%;">
<img src="images/02.jpg">
<p style="position: absolute; left:30%;top:78%;">
鲜一级白条
</p>
<p style="position: absolute; left:30%;top:83%;">2018年4月21日</p>
</div>
</li>
<li>
<div style="position:relative;width:100%;height:100%;">
<img src="images/05.jpg">
<p style="position: absolute; left:30%;top:78%;">
鲜一级白条
</p>
<p style="position: absolute; left:30%;top:83%;">2018年4月21日</p>
</div>
</li>
<li>
<div style="position:relative;width:100%;height:100%;">
<img src="images/06.jpg">
<p style="position: absolute; left:30%;top:78%;">
鲜一级白条
</p>
<p style="position: absolute; left:30%;top:83%;">2018年4月21日</p>
</div>
</li>
<li>
<div style="position:relative;width:100%;height:100%;">
<img src="images/08.jpg">
<p style="position: absolute; left:15%;top:36%;">
水滴是刘慈欣科幻小说《三体》中提到的三体人制造的由强相互作用力材料(SIM)所制成的宇宙探测器,因为其形状与水滴相似所以被人类称之为水滴
</p>
</div>
</li>
</ul>
</div>
<script src="js/jflex.js"></script>
<script type="text/javascript">
$('.flex').jFlex({
autoplay: true
});
</script>
<!-- 代码 结束 -->
</body>
</html>

+ 30
- 0
ButcherTraceBack/Web.Debug.config View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 有关使用 web.config 转换的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--
在下例中,“SetAttributes”转换将更改
“connectionString”的值,仅在“Match”定位器
查找到值为“MyDB”的特性“name”时使用“ReleaseSQLServer”。
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
-->
<system.web>
<!--
在下例中,“Replace”转换将替换
Web.config 文件的整个 <customErrors> 节。
请注意,由于
在 <system.web> 节点下仅有一个 customErrors 节,因此不需要使用“xdt:Locator”特性。
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
-->
</system.web>
</configuration>

+ 31
- 0
ButcherTraceBack/Web.Release.config View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 有关使用 web.config 转换的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--
在下例中,“SetAttributes”转换将更改
“connectionString”的值,仅在“Match”定位器
查找到值为“MyDB”的特性“name”时使用“ReleaseSQLServer”。
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
-->
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<!--
在下例中,“Replace”转换将替换
Web.config 文件的整个 <customErrors> 节。
请注意,由于
在 <system.web> 节点下仅有一个 customErrors 节,因此不需要使用“xdt:Locator”特性。
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
-->
</system.web>
</configuration>

+ 48
- 0
ButcherTraceBack/Web.config View File

@ -0,0 +1,48 @@
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="DbConnection" providerName="System.Data.SqlClient" connectionString="Server=(local);Database=ButcherTraceBack;Integrated Security=true;Language=Simplified Chinese;"/>
</connectionStrings>
<system.web>
<compilation debug="true"/>
</system.web>
</configuration>
<!--<configuration>
<appSettings>
<add key="webpages:Version" value="2.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers></system.webServer>
</configuration>-->

+ 76
- 0
ButcherTraceBack/css/lrtk.css View File

@ -0,0 +1,76 @@
body { font-family: Roboto}
.flex { margin: -32px -8px -8px; max-width: 768px; }
.slides,.slides--titles {
margin:0;
padding:0
}
.slides li,.slides--titles li {
overflow:hidden;
position:relative;
float:left
}
.jFlex,.slides,.slides li,.slides--titles li {
position:relative
}
.jFlex {
overflow:hidden;
-webkit-touch-callout:none;
-webkit-user-select:none;
-khtml-user-select:none;
-moz-user-select:none;
-ms-user-select:none;
user-select:none
}
.slides {
list-style:none
}
.slides--anim {
-moz-transition:transform ease-out .3s;
-ms-transition:transform ease-out .3s;
-o-transition:transform ease-out .3s;
-webkit-transition:transform ease-out .3s;
transition:transform ease-out .3s
}
.slides--titles:after,.slides--titles:before,.slides:after,.slides:before {
content:' ';
display:table
}
.slides--titles:after,.slides:after {
clear:both
}
.slides li {
display:block
}
.slides img {
display:block;
height:auto;
max-width:100%
}
.slides--titles li {
background:#ffffff;
cursor:pointer;
text-align:center;
-moz-transition:background linear .3s;
-ms-transition:background linear .3s;
-o-transition:background linear .3s;
-webkit-transition:background linear .3s;
transition:background linear .3s;
}
.slides--titles li .title--l {
background:#ffffff;
display:block;
height:4px;
left:-100%;
position:relative
}
.slides--titles li .title--t {
color:#ffffff;
display:block;
height:0px;
line-height:0px;
padding:0 10px;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap
}

BIN
ButcherTraceBack/images.rar View File


BIN
ButcherTraceBack/images/wanfu01.jpg View File

Before After
Width: 827  |  Height: 1142  |  Size: 50 KiB

BIN
ButcherTraceBack/images/wanfu02.jpg View File

Before After
Width: 827  |  Height: 1142  |  Size: 57 KiB

BIN
ButcherTraceBack/images/wanfu03.jpg View File

Before After
Width: 827  |  Height: 1142  |  Size: 76 KiB

BIN
ButcherTraceBack/images/wanfu04.jpg View File

Before After
Width: 827  |  Height: 1142  |  Size: 73 KiB

BIN
ButcherTraceBack/images/wanfu05.jpg View File

Before After
Width: 827  |  Height: 1142  |  Size: 66 KiB

BIN
ButcherTraceBack/images/wanfu06.jpg View File

Before After
Width: 827  |  Height: 1142  |  Size: 63 KiB

BIN
ButcherTraceBack/images/wanfu07.jpg View File

Before After
Width: 827  |  Height: 1142  |  Size: 52 KiB

BIN
ButcherTraceBack/images/wanfu08.jpg View File

Before After
Width: 827  |  Height: 1142  |  Size: 42 KiB

BIN
ButcherTraceBack/images/wanfu09.jpg View File

Before After
Width: 595  |  Height: 822  |  Size: 47 KiB

+ 1
- 0
ButcherTraceBack/js/jflex.js View File

@ -0,0 +1 @@
!function (t) { function i(i, e) { function l(i, e) { var l = "number" == typeof i ? i : t(this).index(), s = l ? "transform: translate3d(-" + l * h.slideWidth + "px, 0, 0); " : "", n = "width: " + h.slideCount * h.slideWidth + "px"; h.index = l, h.$slider.attr("style", s + n), "number" != typeof i && h.autoMode && clearInterval(h.autoMode), h.$slideTitles.find("li").attr("class", ""), e ? 0 === l ? (h.$slideTitles.find("li:eq(" + (h.slideCount - 1) + ")").attr("class", "title--auto title--right"), h.$slideTitles.find("li:eq(" + l + ")").attr("class", "title--active title--auto")) : (h.$slideTitles.find("li:eq(" + (l - 1) + ")").attr("class", e ? "title--right title--auto" : "title--right"), h.$slideTitles.find("li:eq(" + l + ")").attr("class", e ? "title--active title--auto" : "title--active")) : h.$slideTitles.find("li:eq(" + l + ")").attr("class", "title--active"), h.$el.offset().height } function s() { var t = 0; h.autoMode = setInterval(function () { t = t === h.slideCount - 1 ? 0 : t + 1, l(t, !0) }, h.options.timing), h.$slideTitles.children().first().attr("class", "title--active title--auto") } function n() { h.$slideTitles.children().first().attr("class", "title--active") } function d() { h.$slideTitles.children().bind("click", l), h.$slides.find("img").bind("dragstart", function (t) { t.preventDefault() }), t(window).bind("resize orientationchange", u) } function a() { function t(t) { h.autoMode && clearInterval(h.autoMode); var l = "mousedown" === t.type ? t.originalEvent : t.originalEvent.touches[0]; n = l.pageX, h.$slider.bind("touchmove", i).bind("mousemove", i).bind("mouseleave", e).bind("mouseup", e).bind("touchend", e).bind("touchcancel", e).removeClass("slides--anim"), h.$slideTitles.children().removeClass("title--auto") } function i(t) { var i = "touchmove" === t.type ? t.originalEvent.touches[0] : t.originalEvent, e = i.pageX; d = Math.round(e - n), s = 0 > d ? "<" : ">"; var l = h.index * -h.slideWidth + d; ">" === s && 0 === h.index || "<" === s && h.index === h.slideCount - 1 || h.$slider.attr("style", "width: " + h.slideWidth * h.slideCount + "px; transform: translate3d(" + l + "px, 0, 0)") } function e(t) { var a = "<" === s ? h.index + 1 : h.index - 1, o = "touchend" === t.type || "touchcancel" === t.type ? t.originalEvent.changedTouches[0] : t.originalEvent, r = o.pageX, u = h.index * h.slideWidth; return d = Math.round(r - n), h.$slider.unbind("touchmove", i).unbind("mousemove", i).unbind("mouseleave", e).unbind("mouseup", e).unbind("touchend", e).unbind("touchcancel", e).addClass("slides--anim"), ">" === s && 0 === h.index || "<" === s && h.index === h.slideCount - 1 ? void 0 : d > 140 || -140 > d ? void l(a) : void h.$slider.attr("style", "width: " + h.slideWidth * h.slideCount + "px; transform: translate3d(-" + u + "px, 0, 0)") } var s, n, d = 0; h.$slider.bind("touchstart", t), h.$slider.bind("mousedown", t) } function o() { h.$el.addClass("jFlex"), h.$slider = h.$el.children(), h.$slides = h.$slider.children(), h.slideCount = h.$slides.length, h.slideWidth = h.$el.width(), h.$slides.width(h.slideWidth + "px"), h.$el.children().width(h.slideCount * h.slideWidth + "px"), h.$slideTitles = t('<ul class="slides--titles"></ul>') } function r() { h.$slider.addClass("slides--anim") } function u() { var t = h.index ? "transform: translate3d(-" + h.index * h.slideWidth + "px, 0, 0); " : ""; h.slideWidth = h.$el.width(), h.$slider.attr("style", t + "width: " + h.slideCount * h.slideWidth + "px"), h.$slides.width(h.slideWidth + "px") } function c() { var i; "bottom" === h.options.titles ? (h.$el.append(h.$slideTitles), i = '<li data-title="{{i}}"><span class="title--l"></span><span class="title--t">{{title}}</span></li>') : (h.$el.prepend(h.$slideTitles), i = '<li data-title="{{i}}"><span class="title--t">{{title}}</span><span class="title--l"></span></li>'); for (var e = "", l = 0; l < h.slideCount; l++) { var s = t(h.$slides[l]).attr("data-title") ? t(h.$slides[l]).attr("data-title") : ""; e += i.replace("{{i}}", l).replace("{{title}}", s) } h.$slideTitles.append(e); var n = (h.$slideTitles.height(), "6"); (2 === h.$slides.length || 3 === h.$slides.length || 4 === h.$slides.length || 5 === h.$slides.length) && (n = h.$slides.length) } var h = this; h.autoMode = null, h.el = i, h.$el = t(i), h.index = 0, h.defaultOptions = { autoplay: !1, fx: "slide", timing: 5e3, titles: "top" }, h.options = t.extend({}, h.defaultOptions, e), h.init = function () { return o(), h.slideCount < 2 ? void console.error("Your HTML must contain at least two slides to flex.") : (c(), d(), "string" == typeof h.options.fx && "slide" === h.options.fx && (r(), a()), void (h.options.autoplay ? s() : n())) }, h.init() } t.fn.jFlex = function (t) { return this.each(function () { new i(this, t) }) } }(jQuery);

+ 10244
- 0
ButcherTraceBack/js/jquery-3.2.0.js
File diff suppressed because it is too large
View File


+ 59
- 0
CreateTable.sql View File

@ -0,0 +1,59 @@
USE [ButcherTraceBack]
GO
/****** Object: Table [dbo].[CarcassTraceInfo] Script Date: 2018/4/14 13:56:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[CarcassTraceInfo](
[Code] [nvarchar](50) NOT NULL,
[Goods_Name] [nvarchar](50) NULL,
[ProductDate] [nvarchar](50) NULL,
[ExpirationTime] [nvarchar](50) NULL,
[ProductCompany] [nvarchar](500) NULL,
[CompanyAddress] [nvarchar](500) NULL,
[CompanyTel] [nvarchar](50) NULL,
[PigFarmAddress] [nvarchar](500) NULL,
[TestingNo] [nvarchar](100) NULL,
[TestingResult] [nvarchar](50) NULL,
[TestingMan] [nvarchar](50) NULL,
[Farmer] [nvarchar](50) NULL,
[ButcherBatch] [nvarchar](50) NULL,
[ButcherTime] [nvarchar](50) NULL,
[InStoreDate] [nvarchar](50) NULL,
[SendDate] [nvarchar](50) NULL,
[SendCustomer] [nvarchar](50) NULL,
[CarNo] [nvarchar](50) NULL,
CONSTRAINT [PK_CarcassTraceInfo] PRIMARY KEY CLUSTERED
(
[Code] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[FreshTraceBack](
[Code] [nvarchar](50) NOT NULL,
[Goods_Name] [nvarchar](50) NULL,
[Goods_Spec] [nvarchar](50) NULL,
[Weight] [nvarchar](50) NULL,
[ButcherDate] [nvarchar](50) NULL,
[ProductDate] [nvarchar](50) NULL,
[Farm_Name] [nvarchar](500) NULL,
[TestingResult] [nvarchar](50) NULL,
[TestingMan] [nvarchar](50) NULL,
[ProductBatch] [nvarchar](50) NULL,
[InStoreDate] [nvarchar](50) NULL,
[SendDate] [nvarchar](50) NULL,
[SendCustomer] [nvarchar](50) NULL,
[CarNo] [nvarchar](50) NULL,
CONSTRAINT [PK_FreshTraceBack] PRIMARY KEY CLUSTERED
(
[Code] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

+ 5
- 0
packages/EntityFramework.5.0.0/Content/App.config.transform View File

@ -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
packages/EntityFramework.5.0.0/Content/Web.config.transform View File

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

BIN
packages/EntityFramework.5.0.0/EntityFramework.5.0.0.nupkg View File


BIN
packages/EntityFramework.5.0.0/lib/net40/EntityFramework.dll View File


+ 18061
- 0
packages/EntityFramework.5.0.0/lib/net40/EntityFramework.xml
File diff suppressed because it is too large
View File


BIN
packages/EntityFramework.5.0.0/lib/net40/zh-Hans/EntityFramework.resources.dll View File


+ 5536
- 0
packages/EntityFramework.5.0.0/lib/net40/zh-Hans/EntityFramework.xml
File diff suppressed because it is too large
View File


BIN
packages/EntityFramework.5.0.0/lib/net45/EntityFramework.dll View File


+ 17968
- 0
packages/EntityFramework.5.0.0/lib/net45/EntityFramework.xml
File diff suppressed because it is too large
View File


BIN
packages/EntityFramework.5.0.0/lib/net45/zh-Hans/EntityFramework.resources.dll View File


+ 5536
- 0
packages/EntityFramework.5.0.0/lib/net45/zh-Hans/EntityFramework.xml
File diff suppressed because it is too large
View File


BIN
packages/EntityFramework.5.0.0/tools/EntityFramework.PS3.psd1 View File


BIN
packages/EntityFramework.5.0.0/tools/EntityFramework.PowerShell.Utility.dll View File


BIN
packages/EntityFramework.5.0.0/tools/EntityFramework.PowerShell.dll View File


BIN
packages/EntityFramework.5.0.0/tools/EntityFramework.psd1 View File


+ 777
- 0
packages/EntityFramework.5.0.0/tools/EntityFramework.psm1 View File

@ -0,0 +1,777 @@
# Copyright (c) Microsoft Corporation. All rights reserved.
$InitialDatabase = '0'
$knownExceptions = @(
'System.Data.Entity.Migrations.Infrastructure.MigrationsException',
'System.Data.Entity.Migrations.Infrastructure.AutomaticMigrationsDisabledException',
'System.Data.Entity.Migrations.Infrastructure.AutomaticDataLossException',
'System.Data.Entity.Migrations.MigrationsPendingException',
'System.Data.Entity.Migrations.ProjectTypeNotSupportedException'
)
<#
.SYNOPSIS
Enables Code First Migrations in a project.
.DESCRIPTION
Enables Migrations by scaffolding a migrations configuration class in the project. If the
target database was created by an initializer, an initial migration will be created (unless
automatic migrations are enabled via the EnableAutomaticMigrations parameter).
.PARAMETER ContextTypeName
Specifies the context to use. If omitted, migrations will attempt to locate a
single context type in the target project.
.PARAMETER EnableAutomaticMigrations
Specifies whether automatic migrations will be enabled in the scaffolded migrations configuration.
If ommitted, automatic migrations will be disabled.
.PARAMETER ProjectName
Specifies the project that the scaffolded migrations configuration class will
be added to. If omitted, the default project selected in package manager
console is used.
.PARAMETER StartUpProjectName
Specifies the configuration file to use for named connection strings. If
omitted, the specified project's configuration file is used.
.PARAMETER ConnectionStringName
Specifies the name of a connection string to use from the application's
configuration file.
.PARAMETER ConnectionString
Specifies the the connection string to use. If omitted, the context's
default connection will be used.
.PARAMETER ConnectionProviderName
Specifies the provider invariant name of the connection string.
.PARAMETER Force
Specifies that the migrations configuration be overwritten when running more
than once for a given project.
#>
function Enable-Migrations
{
[CmdletBinding(DefaultParameterSetName = 'ConnectionStringName')]
param (
[string] $ContextTypeName,
[alias('Auto')]
[switch] $EnableAutomaticMigrations,
[string] $ProjectName,
[string] $StartUpProjectName,
[parameter(ParameterSetName = 'ConnectionStringName')]
[string] $ConnectionStringName,
[parameter(ParameterSetName = 'ConnectionStringAndProviderName',
Mandatory = $true)]
[string] $ConnectionString,
[parameter(ParameterSetName = 'ConnectionStringAndProviderName',
Mandatory = $true)]
[string] $ConnectionProviderName,
[switch] $Force
)
$runner = New-MigrationsRunner $ProjectName $StartUpProjectName $null $ConnectionStringName $ConnectionString $ConnectionProviderName
try
{
Invoke-RunnerCommand $runner System.Data.Entity.Migrations.EnableMigrationsCommand @( $EnableAutomaticMigrations.IsPresent, $Force.IsPresent ) @{ 'ContextTypeName' = $ContextTypeName }
$error = Get-RunnerError $runner
if ($error)
{
if ($knownExceptions -notcontains $error.TypeName)
{
Write-Host $error.StackTrace
}
throw $error.Message
}
}
finally
{
Remove-Runner $runner
}
}
<#
.SYNOPSIS
Scaffolds a migration script for any pending model changes.
.DESCRIPTION
Scaffolds a new migration script and adds it to the project.
.PARAMETER Name
Specifies the name of the custom script.
.PARAMETER Force
Specifies that the migration user code be overwritten when re-scaffolding an
existing migration.
.PARAMETER ProjectName
Specifies the project that contains the migration configuration type to be
used. If ommitted, the default project selected in package manager console
is used.
.PARAMETER StartUpProjectName
Specifies the configuration file to use for named connection strings. If
omitted, the specified project's configuration file is used.
.PARAMETER ConfigurationTypeName
Specifies the migrations configuration to use. If omitted, migrations will
attempt to locate a single migrations configuration type in the target
project.
.PARAMETER ConnectionStringName
Specifies the name of a connection string to use from the application's
configuration file.
.PARAMETER ConnectionString
Specifies the the connection string to use. If omitted, the context's
default connection will be used.
.PARAMETER ConnectionProviderName
Specifies the provider invariant name of the connection string.
.PARAMETER IgnoreChanges
Scaffolds an empty migration ignoring any pending changes detected in the current model.
This can be used to create an initial, empty migration to enable Migrations for an existing
database. N.B. Doing this assumes that the target database schema is compatible with the
current model.
#>
function Add-Migration
{
[CmdletBinding(DefaultParameterSetName = 'ConnectionStringName')]
param (
[parameter(Position = 0,
Mandatory = $true)]
[string] $Name,
[switch] $Force,
[string] $ProjectName,
[string] $StartUpProjectName,
[string] $ConfigurationTypeName,
[parameter(ParameterSetName = 'ConnectionStringName')]
[string] $ConnectionStringName,
[parameter(ParameterSetName = 'ConnectionStringAndProviderName',
Mandatory = $true)]
[string] $ConnectionString,
[parameter(ParameterSetName = 'ConnectionStringAndProviderName',
Mandatory = $true)]
[string] $ConnectionProviderName,
[switch] $IgnoreChanges)
$runner = New-MigrationsRunner $ProjectName $StartUpProjectName $ConfigurationTypeName $ConnectionStringName $ConnectionString $ConnectionProviderName
try
{
Invoke-RunnerCommand $runner System.Data.Entity.Migrations.AddMigrationCommand @( $Name, $Force.IsPresent, $IgnoreChanges.IsPresent )
$error = Get-RunnerError $runner
if ($error)
{
if ($knownExceptions -notcontains $error.TypeName)
{
Write-Host $error.StackTrace
}
throw $error.Message
}
}
finally
{
Remove-Runner $runner
}
}
<#
.SYNOPSIS
Applies any pending migrations to the database.
.DESCRIPTION
Updates the database to the current model by applying pending migrations.
.PARAMETER SourceMigration
Only valid with -Script. Specifies the name of a particular migration to use
as the update's starting point. If ommitted, the last applied migration in
the database will be used.
.PARAMETER TargetMigration
Specifies the name of a particular migration to update the database to. If
ommitted, the current model will be used.
.PARAMETER Script
Generate a SQL script rather than executing the pending changes directly.
.PARAMETER Force
Specifies that data loss is acceptable during automatic migration of the
database.
.PARAMETER ProjectName
Specifies the project that contains the migration configuration type to be
used. If ommitted, the default project selected in package manager console
is used.
.PARAMETER StartUpProjectName
Specifies the configuration file to use for named connection strings. If
omitted, the specified project's configuration file is used.
.PARAMETER ConfigurationTypeName
Specifies the migrations configuration to use. If omitted, migrations will
attempt to locate a single migrations configuration type in the target
project.
.PARAMETER ConnectionStringName
Specifies the name of a connection string to use from the application's
configuration file.
.PARAMETER ConnectionString
Specifies the the connection string to use. If omitted, the context's
default connection will be used.
.PARAMETER ConnectionProviderName
Specifies the provider invariant name of the connection string.
#>
function Update-Database
{
[CmdletBinding(DefaultParameterSetName = 'ConnectionStringName')]
param (
[string] $SourceMigration,
[string] $TargetMigration,
[switch] $Script,
[switch] $Force,
[string] $ProjectName,
[string] $StartUpProjectName,
[string] $ConfigurationTypeName,
[parameter(ParameterSetName = 'ConnectionStringName')]
[string] $ConnectionStringName,
[parameter(ParameterSetName = 'ConnectionStringAndProviderName',
Mandatory = $true)]
[string] $ConnectionString,
[parameter(ParameterSetName = 'ConnectionStringAndProviderName',
Mandatory = $true)]
[string] $ConnectionProviderName)
$runner = New-MigrationsRunner $ProjectName $StartUpProjectName $ConfigurationTypeName $ConnectionStringName $ConnectionString $ConnectionProviderName
try
{
Invoke-RunnerCommand $runner System.Data.Entity.Migrations.UpdateDatabaseCommand @( $SourceMigration, $TargetMigration, $Script.IsPresent, $Force.IsPresent, $Verbose.IsPresent )
$error = Get-RunnerError $runner
if ($error)
{
if ($knownExceptions -notcontains $error.TypeName)
{
Write-Host $error.StackTrace
}
throw $error.Message
}
}
finally
{
Remove-Runner $runner
}
}
<#
.SYNOPSIS
Displays the migrations that have been applied to the target database.
.DESCRIPTION
Displays the migrations that have been applied to the target database.
.PARAMETER ProjectName
Specifies the project that contains the migration configuration type to be
used. If ommitted, the default project selected in package manager console
is used.
.PARAMETER StartUpProjectName
Specifies the configuration file to use for named connection strings. If
omitted, the specified project's configuration file is used.
.PARAMETER ConfigurationTypeName
Specifies the migrations configuration to use. If omitted, migrations will
attempt to locate a single migrations configuration type in the target
project.
.PARAMETER ConnectionStringName
Specifies the name of a connection string to use from the application's
configuration file.
.PARAMETER ConnectionString
Specifies the the connection string to use. If omitted, the context's
default connection will be used.
.PARAMETER ConnectionProviderName
Specifies the provider invariant name of the connection string.
#>
function Get-Migrations
{
[CmdletBinding(DefaultParameterSetName = 'ConnectionStringName')]
param (
[string] $ProjectName,
[string] $StartUpProjectName,
[string] $ConfigurationTypeName,
[parameter(ParameterSetName = 'ConnectionStringName')]
[string] $ConnectionStringName,
[parameter(ParameterSetName = 'ConnectionStringAndProviderName',
Mandatory = $true)]
[string] $ConnectionString,
[parameter(ParameterSetName = 'ConnectionStringAndProviderName',
Mandatory = $true)]
[string] $ConnectionProviderName)
$runner = New-MigrationsRunner $ProjectName $StartUpProjectName $ConfigurationTypeName $ConnectionStringName $ConnectionString $ConnectionProviderName
try
{
Invoke-RunnerCommand $runner System.Data.Entity.Migrations.GetMigrationsCommand
$error = Get-RunnerError $runner
if ($error)
{
if ($knownExceptions -notcontains $error.TypeName)
{
Write-Host $error.StackTrace
}
throw $error.Message
}
}
finally
{
Remove-Runner $runner
}
}
function New-MigrationsRunner($ProjectName, $StartUpProjectName, $ConfigurationTypeName, $ConnectionStringName, $ConnectionString, $ConnectionProviderName)
{
$startUpProject = Get-MigrationsStartUpProject $StartUpProjectName $ProjectName
Build-Project $startUpProject
$project = Get-MigrationsProject $ProjectName
Build-Project $project
$installPath = Get-EntityFrameworkInstallPath $project
$toolsPath = Join-Path $installPath tools
$info = New-Object System.AppDomainSetup -Property @{
ShadowCopyFiles = 'true';
ApplicationBase = $installPath;
PrivateBinPath = 'tools'
}
$targetFrameworkVersion = (New-Object System.Runtime.Versioning.FrameworkName ($project.Properties.Item('TargetFrameworkMoniker').Value)).Version
if ($targetFrameworkVersion -lt (New-Object Version @( 4, 5 )))
{
$info.PrivateBinPath += ';lib\net40'
$dteVersion = [System.Text.RegularExpressions.Regex]::Match($DTE.Version, '^(?<version>\d{1,2}(\.\d{1,2})?)( \(.+\))?$').Groups['version'].Value
if ((New-Object Version $dteVersion) -lt (New-Object Version @( 11, 0 )))
{
$info.ConfigurationFile = Join-Path $toolsPath 'Redirect.config'
}
else
{
$info.ConfigurationFile = Join-Path $toolsPath 'Redirect.VS11.config'
}
}
else
{
$info.PrivateBinPath += ';lib\net45'
$info.ConfigurationFile = [AppDomain]::CurrentDomain.SetupInformation.ConfigurationFile
}
$domain = [AppDomain]::CreateDomain('Migrations', $null, $info)
$domain.SetData('project', $project)
$domain.SetData('startUpProject', $startUpProject)
$domain.SetData('configurationTypeName', $ConfigurationTypeName)
$domain.SetData('connectionStringName', $ConnectionStringName)
$domain.SetData('connectionString', $ConnectionString)
$domain.SetData('connectionProviderName', $ConnectionProviderName)
[AppDomain]::CurrentDomain.SetShadowCopyFiles()
$utilityAssembly = [System.Reflection.Assembly]::LoadFrom((Join-Path $toolsPath EntityFramework.PowerShell.Utility.dll))
$dispatcher = $utilityAssembly.CreateInstance(
'System.Data.Entity.Migrations.Utilities.DomainDispatcher',
$false,
[System.Reflection.BindingFlags]::Instance -bor [System.Reflection.BindingFlags]::Public,
$null,
$PSCmdlet,
$null,
$null)
$domain.SetData('efDispatcher', $dispatcher)
return @{
Domain = $domain;
ToolsPath = $toolsPath
}
}
function Remove-Runner($runner)
{
[AppDomain]::Unload($runner.Domain)
}
function Invoke-RunnerCommand($runner, $command, $parameters, $anonymousArguments)
{
$domain = $runner.Domain
if ($anonymousArguments)
{
$anonymousArguments.GetEnumerator() | %{
$domain.SetData($_.Name, $_.Value)
}
}
$domain.CreateInstanceFrom(
(Join-Path $runner.ToolsPath EntityFramework.PowerShell.dll),
$command,
$false,
0,
$null,
$parameters,
$null,
$null) | Out-Null
}
function Get-RunnerError($runner)
{
$domain = $runner.Domain
if (!$domain.GetData('wasError'))
{
return $null
}
return @{
Message = $domain.GetData('error.Message');
TypeName = $domain.GetData('error.TypeName');
StackTrace = $domain.GetData('error.StackTrace')
}
}
function Get-MigrationsProject($name, $hideMessage)
{
if ($name)
{
return Get-SingleProject $name
}
$project = Get-Project
$projectName = $project.Name
if (!$hideMessage)
{
Write-Verbose "Using NuGet project '$projectName'."
}
return $project
}
function Get-MigrationsStartUpProject($name, $fallbackName)
{
$startUpProject = $null
if ($name)
{
$startUpProject = Get-SingleProject $name
}
else
{
$startupProjectPaths = $DTE.Solution.SolutionBuild.StartupProjects
if ($startupProjectPaths)
{
if ($startupProjectPaths.Length -eq 1)
{
$startupProjectPath = $startupProjectPaths[0]
if (!(Split-Path -IsAbsolute $startupProjectPath))
{
$solutionPath = Split-Path $DTE.Solution.Properties.Item('Path').Value
$startupProjectPath = Join-Path $solutionPath $startupProjectPath -Resolve
}
$startupProject = Get-SolutionProjects | ?{
try
{
$fullName = $_.FullName
}
catch [NotImplementedException]
{
return false;
}
if ($fullName -and $fullName.EndsWith('\'))
{
$fullName = $fullName.Substring(0, $fullName.Length - 1)
}
return $fullName -eq $startupProjectPath
}
}
else
{
Write-Verbose 'More than one start-up project found.'
}
}
else
{
Write-Verbose 'No start-up project found.'
}
}
if (!($startUpProject -and (Test-StartUpProject $startUpProject)))
{
$startUpProject = Get-MigrationsProject $fallbackName $true
$startUpProjectName = $startUpProject.Name
Write-Warning "Cannot determine a valid start-up project. Using project '$startUpProjectName' instead. Your configuration file and working directory may not be set as expected. Use the -StartUpProjectName parameter to set one explicitly. Use the -Verbose switch for more information."
}
else
{
$startUpProjectName = $startUpProject.Name
Write-Verbose "Using StartUp project '$startUpProjectName'."
}
return $startUpProject
}
function Get-SolutionProjects()
{
$projects = New-Object System.Collections.Stack
$DTE.Solution.Projects | %{
$projects.Push($_)
}
while ($projects.Count -ne 0)
{
$project = $projects.Pop();
# NOTE: This line is similar to doing a "yield return" in C#
$project
if ($project.ProjectItems)
{
$project.ProjectItems | ?{ $_.SubProject } | %{
$projects.Push($_.SubProject)
}
}
}
}
function Get-SingleProject($name)
{
$project = Get-Project $name
if ($project -is [array])
{
throw "More than one project '$name' was found. Specify the full name of the one to use."
}
return $project
}
function Test-StartUpProject($project)
{
if ($project.Kind -eq '{cc5fd16d-436d-48ad-a40c-5a424c6e3e79}')
{
$projectName = $project.Name
Write-Verbose "Cannot use start-up project '$projectName'. The Windows Azure Project type isn't supported."
return $false
}
return $true
}
function Build-Project($project)
{
$configuration = $DTE.Solution.SolutionBuild.ActiveConfiguration.Name
$DTE.Solution.SolutionBuild.BuildProject($configuration, $project.UniqueName, $true)
if ($DTE.Solution.SolutionBuild.LastBuildInfo)
{
$projectName = $project.Name
throw "The project '$projectName' failed to build."
}
}
function Get-EntityFrameworkInstallPath($project)
{
$package = Get-Package -ProjectName $project.FullName | ?{ $_.Id -eq 'EntityFramework' }
if (!$package)
{
$projectName = $project.Name
throw "The EntityFramework package is not installed on project '$projectName'."
}
return Get-PackageInstallPath $package
}
function Get-PackageInstallPath($package)
{
$componentModel = Get-VsComponentModel
$packageInstallerServices = $componentModel.GetService([NuGet.VisualStudio.IVsPackageInstallerServices])
$vsPackage = $packageInstallerServices.GetInstalledPackages() | ?{ $_.Id -eq $package.Id -and $_.Version -eq $package.Version }
return $vsPackage.InstallPath
}
Export-ModuleMember @( 'Enable-Migrations', 'Add-Migration', 'Update-Database', 'Get-Migrations' ) -Variable InitialDatabase
# SIG # Begin signature block
# MIIaRgYJKoZIhvcNAQcCoIIaNzCCGjMCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUc46O5H/xCa1Zd+kKsDgAx0de
# pNmgghUtMIIEoDCCA4igAwIBAgIKYRnMkwABAAAAZjANBgkqhkiG9w0BAQUFADB5
# MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk
# bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSMwIQYDVQQDExpN
# aWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQTAeFw0xMTEwMTAyMDMyMjVaFw0xMzAx
# MTAyMDMyMjVaMIGDMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ
# MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
# MQ0wCwYDVQQLEwRNT1BSMR4wHAYDVQQDExVNaWNyb3NvZnQgQ29ycG9yYXRpb24w
# ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDuW759ESTjhgbgZv9ItRe9
# AuS0DDLwcj59LofXTqGxp0Mv92WeMeEyMUWu18EkhCHXLrWEfvo101Mc17ZRHk/O
# ZrnrtwwC/SlcraiH9soitNW/CHX1inCPY9fvih7pj0MkZFrTh32QbTusds1XNn3o
# vBBWrJjwiV0uZMavJgleHmMV8T2/Fo+ZiALDMLfBC2AfD3LM1reoNRKGm6ELCuaT
# W476VJzB8xlfQo0Snx0/kLcnE4MZMoId89mH1CGyPKK2B0/XJKrujfWz2fr5OU+n
# 6fKvWVL03EGbLxFwY93q3qrxbSEEEFMzu7JPxeFTskFlR2439rzpmxZBkWsuWzDD
# AgMBAAGjggEdMIIBGTATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUG1IO
# 8xEqt8CJwxGBPdSWWLmjU24wDgYDVR0PAQH/BAQDAgeAMB8GA1UdIwQYMBaAFMsR
# 6MrStBZYAck3LjMWFrlMmgofMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwu
# bWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY0NvZFNpZ1BDQV8wOC0z
# MS0yMDEwLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93
# d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljQ29kU2lnUENBXzA4LTMxLTIw
# MTAuY3J0MA0GCSqGSIb3DQEBBQUAA4IBAQClWzZsrU6baRLjb4oCm2l3w2xkciiI
# 2T1FbSwYe9QoLxPiWWobwgs0t4r96rmU7Acx5mr0dQTTp9peOgaeEP2pDb2cUUNv
# /2eUnOHPfPAksDXMg13u2sBvNknAWgpX9nPhnvPjCEw7Pi/M0s3uTyJw9wQfAqZL
# m7iPXIgONpRsMwe4qa1RoNDC3I4iEr3D34LXVqH33fClIFcQEJ3urIZ0bHGbwfDy
# wnBep9ttTTdYmU15QNA0XVolrmfrG05GBrCMKR+jEI+lM58j1fi1Rn3g7mOYkEs+
# BagvsBizWaSvQVOOCAUQLSrJOgZMHC6pMVFWZKyazKyXmCmKl5CH6p22MIIEujCC
# A6KgAwIBAgIKYQUZlgAAAAAAGzANBgkqhkiG9w0BAQUFADB3MQswCQYDVQQGEwJV
# UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UE
# ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEwHwYDVQQDExhNaWNyb3NvZnQgVGlt
# ZS1TdGFtcCBQQ0EwHhcNMTEwNzI1MjA0MjE5WhcNMTIxMDI1MjA0MjE5WjCBszEL
# MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
# bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjENMAsGA1UECxMETU9Q
# UjEnMCUGA1UECxMebkNpcGhlciBEU0UgRVNOOjlFNzgtODY0Qi0wMzlEMSUwIwYD
# VQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNlMIIBIjANBgkqhkiG9w0B
# AQEFAAOCAQ8AMIIBCgKCAQEA08s7U6KfRKN6q01WcVOKd6o3k34BPv2rAqNTqf/R
# sSLFAJDndW7uGOiBDhPF2GEAvh+gdjsEDQTFBKCo/ENTBqEEBLkLkpgCYjjv1DMS
# 9ys9e++tRVeFlSCf12M0nGJGjr6u4NmeOfapVf3P53fmNRPvXOi/SJNPGkMHWDiK
# f4UUbOrJ0Et6gm7L0xVgCBSJlKhbPzrJPyB9bS9YGn3Kiji8w8I5aNgtWBoj7SoQ
# CFogjIKl7dGXRZKFzMM3g98NmHzF07bgmVPYeAj15SMhB2KGWmppGf1w+VM0gfcl
# MRmGh4vAVZr9qkw1Ff1b6ZXJq1OYKV8speElD2TF8rAndQIDAQABo4IBCTCCAQUw
# HQYDVR0OBBYEFHkj56ENvlUsaBgpYoJn1vPhNjhaMB8GA1UdIwQYMBaAFCM0+NlS
# RnAK7UD7dvuzK7DDNbMPMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly9jcmwubWlj
# cm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY3Jvc29mdFRpbWVTdGFtcFBD
# QS5jcmwwWAYIKwYBBQUHAQEETDBKMEgGCCsGAQUFBzAChjxodHRwOi8vd3d3Lm1p
# Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY3Jvc29mdFRpbWVTdGFtcFBDQS5jcnQw
# EwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZIhvcNAQEFBQADggEBAEfCdoFbMd1v
# 0zyZ8npsfpcTUCwFFxsQuEShtYz0Vs+9sCG0ZG1hHNju6Ov1ku5DohhEw/r67622
# XH+XbUu1Q/snYXgIVHyx+a+YCrR0xKroLVDEff59TqGZ1icot67Y37GPgyKOzvN5
# /GEUbb/rzISw36O7WwW36lT1Yh1sJ6ZjS/rjofq734WWZWlTsLZxmGQmZr3F8Vxi
# vJH0PZxLQgANzzgFFCZa3CoFS39qmTjY3XOZos6MUCSepOv1P4p4zFSZXSVmpEEG
# KK9JxLRSlOzeAoNk/k3U/0ui/CmA2+4/qzztM4jKvyJg0Fw7BLAKtJhtPKc6T5rR
# ARYRYopBdqAwggW8MIIDpKADAgECAgphMyYaAAAAAAAxMA0GCSqGSIb3DQEBBQUA
# MF8xEzARBgoJkiaJk/IsZAEZFgNjb20xGTAXBgoJkiaJk/IsZAEZFgltaWNyb3Nv
# ZnQxLTArBgNVBAMTJE1pY3Jvc29mdCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
# eTAeFw0xMDA4MzEyMjE5MzJaFw0yMDA4MzEyMjI5MzJaMHkxCzAJBgNVBAYTAlVT
# MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK
# ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBDb2Rl
# IFNpZ25pbmcgUENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsnJZ
# XBkwZL8dmmAgIEKZdlNsPhvWb8zL8epr/pcWEODfOnSDGrcvoDLs/97CQk4j1XIA
# 2zVXConKriBJ9PBorE1LjaW9eUtxm0cH2v0l3511iM+qc0R/14Hb873yNqTJXEXc
# r6094CholxqnpXJzVvEXlOT9NZRyoNZ2Xx53RYOFOBbQc1sFumdSjaWyaS/aGQv+
# knQp4nYvVN0UMFn40o1i/cvJX0YxULknE+RAMM9yKRAoIsc3Tj2gMj2QzaE4BoVc
# TlaCKCoFMrdL109j59ItYvFFPeesCAD2RqGe0VuMJlPoeqpK8kbPNzw4nrR3XKUX
# no3LEY9WPMGsCV8D0wIDAQABo4IBXjCCAVowDwYDVR0TAQH/BAUwAwEB/zAdBgNV
# HQ4EFgQUyxHoytK0FlgByTcuMxYWuUyaCh8wCwYDVR0PBAQDAgGGMBIGCSsGAQQB
# gjcVAQQFAgMBAAEwIwYJKwYBBAGCNxUCBBYEFP3RMU7TJoqV4ZhgO6gxb6Y8vNgt
# MBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMB8GA1UdIwQYMBaAFA6sgmBAVieX
# 5SUT/CrhClOVWeSkMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwubWljcm9z
# b2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL21pY3Jvc29mdHJvb3RjZXJ0LmNybDBU
# BggrBgEFBQcBAQRIMEYwRAYIKwYBBQUHMAKGOGh0dHA6Ly93d3cubWljcm9zb2Z0
# LmNvbS9wa2kvY2VydHMvTWljcm9zb2Z0Um9vdENlcnQuY3J0MA0GCSqGSIb3DQEB
# BQUAA4ICAQBZOT5/Jkav629AsTK1ausOL26oSffrX3XtTDst10OtC/7L6S0xoyPM
# fFCYgCFdrD0vTLqiqFac43C7uLT4ebVJcvc+6kF/yuEMF2nLpZwgLfoLUMRWzS3j
# StK8cOeoDaIDpVbguIpLV/KVQpzx8+/u44YfNDy4VprwUyOFKqSCHJPilAcd8uJO
# +IyhyugTpZFOyBvSj3KVKnFtmxr4HPBT1mfMIv9cHc2ijL0nsnljVkSiUc356aNY
# Vt2bAkVEL1/02q7UgjJu/KSVE+Traeepoiy+yCsQDmWOmdv1ovoSJgllOJTxeh9K
# u9HhVujQeJYYXMk1Fl/dkx1Jji2+rTREHO4QFRoAXd01WyHOmMcJ7oUOjE9tDhNO
# PXwpSJxy0fNsysHscKNXkld9lI2gG0gDWvfPo2cKdKU27S0vF8jmcjcS9G+xPGeC
# +VKyjTMWZR4Oit0Q3mT0b85G1NMX6XnEBLTT+yzfH4qerAr7EydAreT54al/RrsH
# YEdlYEBOsELsTu2zdnnYCjQJbRyAMR/iDlTd5aH75UcQrWSY/1AWLny/BSF64pVB
# J2nDk4+VyY3YmyGuDVyc8KKuhmiDDGotu3ZrAB2WrfIWe/YWgyS5iM9qqEcxL5rc
# 43E91wB+YkfRzojJuBj6DnKNwaM9rwJAav9pm5biEKgQtDdQCNbDPTCCBgcwggPv
# oAMCAQICCmEWaDQAAAAAABwwDQYJKoZIhvcNAQEFBQAwXzETMBEGCgmSJomT8ixk
# ARkWA2NvbTEZMBcGCgmSJomT8ixkARkWCW1pY3Jvc29mdDEtMCsGA1UEAxMkTWlj
# cm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTA3MDQwMzEyNTMw
# OVoXDTIxMDQwMzEzMDMwOVowdzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
# bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
# b3JhdGlvbjEhMB8GA1UEAxMYTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBMIIBIjAN
# BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn6Fssd/bSJIqfGsuGeG94uPFmVEj
# UK3O3RhOJA/u0afRTK10MCAR6wfVVJUVSZQbQpKumFwwJtoAa+h7veyJBw/3DgSY
# 8InMH8szJIed8vRnHCz8e+eIHernTqOhwSNTyo36Rc8J0F6v0LBCBKL5pmyTZ9co
# 3EZTsIbQ5ShGLieshk9VUgzkAyz7apCQMG6H81kwnfp+1pez6CGXfvjSE/MIt1Nt
# UrRFkJ9IAEpHZhEnKWaol+TTBoFKovmEpxFHFAmCn4TtVXj+AZodUAiFABAwRu23
# 3iNGu8QtVJ+vHnhBMXfMm987g5OhYQK1HQ2x/PebsgHOIktU//kFw8IgCwIDAQAB
# o4IBqzCCAacwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUIzT42VJGcArtQPt2
# +7MrsMM1sw8wCwYDVR0PBAQDAgGGMBAGCSsGAQQBgjcVAQQDAgEAMIGYBgNVHSME
# gZAwgY2AFA6sgmBAVieX5SUT/CrhClOVWeSkoWOkYTBfMRMwEQYKCZImiZPyLGQB
# GRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0MS0wKwYDVQQDEyRNaWNy
# b3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCEHmtFqFKoKWtTHNY9AcT
# LmUwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3Br
# aS9jcmwvcHJvZHVjdHMvbWljcm9zb2Z0cm9vdGNlcnQuY3JsMFQGCCsGAQUFBwEB
# BEgwRjBEBggrBgEFBQcwAoY4aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9j
# ZXJ0cy9NaWNyb3NvZnRSb290Q2VydC5jcnQwEwYDVR0lBAwwCgYIKwYBBQUHAwgw
# DQYJKoZIhvcNAQEFBQADggIBABCXisNcA0Q23em0rXfbznlRTQGxLnRxW20ME6vO
# vnuPuC7UEqKMbWK4VwLLTiATUJndekDiV7uvWJoc4R0Bhqy7ePKL0Ow7Ae7ivo8K
# BciNSOLwUxXdT6uS5OeNatWAweaU8gYvhQPpkSokInD79vzkeJkuDfcH4nC8GE6d
# jmsKcpW4oTmcZy3FUQ7qYlw/FpiLID/iBxoy+cwxSnYxPStyC8jqcD3/hQoT38IK
# YY7w17gX606Lf8U1K16jv+u8fQtCe9RTciHuMMq7eGVcWwEXChQO0toUmPU8uWZY
# sy0v5/mFhsxRVuidcJRsrDlM1PZ5v6oYemIp76KbKTQGdxpiyT0ebR+C8AvHLLvP
# Q7Pl+ex9teOkqHQ1uE7FcSMSJnYLPFKMcVpGQxS8s7OwTWfIn0L/gHkhgJ4VMGbo
# QhJeGsieIiHQQ+kr6bv0SMws1NgygEwmKkgkX1rqVu+m3pmdyjpvvYEndAYR7nYh
# v5uCwSdUtrFqPYmhdmG0bqETpr+qR/ASb/2KMmyy/t9RyIwjyWa9nR2HEmQCPS2v
# WY+45CHltbDKY7R4VAXUQS5QrJSwpXirs6CWdRrZkocTdSIvMqgIbqBbjCW/oO+E
# yiHW6x5PyZruSeD3AWVviQt9yGnI5m7qp5fOMSn/DsVbXNhNG6HY+i+ePy5VFmvJ
# E6P9MYIEgzCCBH8CAQEwgYcweTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
# bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
# b3JhdGlvbjEjMCEGA1UEAxMaTWljcm9zb2Z0IENvZGUgU2lnbmluZyBQQ0ECCmEZ
# zJMAAQAAAGYwCQYFKw4DAhoFAKCBsDAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIB
# BDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQU
# SDInMyiqV3LEzPhzf6mjYJvp5qAwUAYKKwYBBAGCNwIBDDFCMECgIoAgAEUAbgB0
# AGkAdAB5ACAARgByAGEAbQBlAHcAbwByAGuhGoAYaHR0cDovL21zZG4uY29tL2Rh
# dGEvZWYgMA0GCSqGSIb3DQEBAQUABIIBAMTy2exDNM/cRmGrhj6rawr6XoQp77kh
# +WOMUmSG5U4qSlP8g3fVFH030Xsxz5d8TunxEzRUyDhYHh3mQ56x4RCVJU/fdl8Q
# dhXwn4VfV84G3+mIHVRCo8+8hm/o1l1K0sHhLCaPSoZht1bcKH09gK1VxoNhBt78
# BFUHLTWw0sRwrEJRW1xZPwOoh2rv1cnYi7GPKFHiYrCV3NSHRkSJZmA42UYA1iZv
# 3fF9QCQNlTDY4jiC2vsa/eWt0qhups1gQXdqg8y/Zvc5cEYxF+ByataJ6fI4w5HP
# 5WNzsVl1O+6VFlj1qjMzOyVlsHWCOIfFfc8iLoWWy+A4W00yEeHIMT2hggIdMIIC
# GQYJKoZIhvcNAQkGMYICCjCCAgYCAQEwgYUwdzELMAkGA1UEBhMCVVMxEzARBgNV
# BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv
# c29mdCBDb3Jwb3JhdGlvbjEhMB8GA1UEAxMYTWljcm9zb2Z0IFRpbWUtU3RhbXAg
# UENBAgphBRmWAAAAAAAbMAcGBSsOAwIaoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3
# DQEHATAcBgkqhkiG9w0BCQUxDxcNMTIwNjI4MjA0MzM5WjAjBgkqhkiG9w0BCQQx
# FgQU2luimdNA+66F/z6ooEia0K5OZC8wDQYJKoZIhvcNAQEFBQAEggEAPUTPALhi
# x8qJIn6WmeZTiazQRH4/TVQHCJPDxhlaMgDUDsPwwmjrAfL/UnMz+TVi5ltSM0Hb
# jGLfhTbaw/YcLUqztgxNq/vm0cFqU3n+rIGUBXFUwDoS6Ol6UTSoXkJVHyiOxHuU
# Fdh33QDv9EVBbr1CQJLTs02d31Uwjg8vUt9+LDSYQWFlZH0+xsy1wStReGX4DSRz
# QneatHmqk+Vej4/3iFKBlCJO1SPlXQLaFAUFsZr6yl6oTrpfatG6sA16/e8jjW4u
# Kz0GzJYJ4DMVdSVGpsvVWMADsbEsjlr6yesOrN4ZDEBdv7Y3P518wK/iJ1/WdgRc
# SA474q5bExc5pA==
# SIG # End signature block

+ 18
- 0
packages/EntityFramework.5.0.0/tools/Redirect.VS11.config View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="EntityFramework"
culture="neutral"
publicKeyToken="b77a5c561934e089" />
<bindingRedirect oldVersion="5.0.0.0"
newVersion="4.4.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.VisualStudio.Shell" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="2.0.0.0-10.0.0.0" newVersion="11.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

+ 14
- 0
packages/EntityFramework.5.0.0/tools/Redirect.config View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="EntityFramework"
culture="neutral"
publicKeyToken="b77a5c561934e089" />
<bindingRedirect oldVersion="5.0.0.0"
newVersion="4.4.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

+ 30
- 0
packages/EntityFramework.5.0.0/tools/about_EntityFramework.help.txt View File

@ -0,0 +1,30 @@
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 included.
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.
SEE ALSO
Enable-Migrations
Add-Migration
Update-Database
Get-Migrations

+ 176
- 0
packages/EntityFramework.5.0.0/tools/init.ps1 View File

@ -0,0 +1,176 @@
param($installPath, $toolsPath, $package, $project)
$importedModule = Get-Module | ?{ $_.Name -eq 'EntityFramework' }
if ($PSVersionTable.PSVersion -ge (New-Object Version @( 3, 0 )))
{
$thisModuleManifest = 'EntityFramework.PS3.psd1'
}
else
{
$thisModuleManifest = 'EntityFramework.psd1'
}
$thisModule = Test-ModuleManifest (Join-Path $toolsPath $thisModuleManifest)
$shouldImport = $true
if ($importedModule)
{
if ($importedModule.Version -le $thisModule.Version)
{
Remove-Module EntityFramework
}
else
{
$shouldImport = $false
}
}
if ($shouldImport)
{
Import-Module $thisModule
}
# SIG # Begin signature block
# MIIaSAYJKoZIhvcNAQcCoIIaOTCCGjUCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQU4JbMotbKQrAO4s/cceCMbJQG
# 482gghUtMIIEoDCCA4igAwIBAgIKYRnMkwABAAAAZjANBgkqhkiG9w0BAQUFADB5
# MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk
# bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSMwIQYDVQQDExpN
# aWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQTAeFw0xMTEwMTAyMDMyMjVaFw0xMzAx
# MTAyMDMyMjVaMIGDMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ
# MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
# MQ0wCwYDVQQLEwRNT1BSMR4wHAYDVQQDExVNaWNyb3NvZnQgQ29ycG9yYXRpb24w
# ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDuW759ESTjhgbgZv9ItRe9
# AuS0DDLwcj59LofXTqGxp0Mv92WeMeEyMUWu18EkhCHXLrWEfvo101Mc17ZRHk/O
# ZrnrtwwC/SlcraiH9soitNW/CHX1inCPY9fvih7pj0MkZFrTh32QbTusds1XNn3o
# vBBWrJjwiV0uZMavJgleHmMV8T2/Fo+ZiALDMLfBC2AfD3LM1reoNRKGm6ELCuaT
# W476VJzB8xlfQo0Snx0/kLcnE4MZMoId89mH1CGyPKK2B0/XJKrujfWz2fr5OU+n
# 6fKvWVL03EGbLxFwY93q3qrxbSEEEFMzu7JPxeFTskFlR2439rzpmxZBkWsuWzDD
# AgMBAAGjggEdMIIBGTATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUG1IO
# 8xEqt8CJwxGBPdSWWLmjU24wDgYDVR0PAQH/BAQDAgeAMB8GA1UdIwQYMBaAFMsR
# 6MrStBZYAck3LjMWFrlMmgofMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwu
# bWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY0NvZFNpZ1BDQV8wOC0z
# MS0yMDEwLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93
# d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljQ29kU2lnUENBXzA4LTMxLTIw
# MTAuY3J0MA0GCSqGSIb3DQEBBQUAA4IBAQClWzZsrU6baRLjb4oCm2l3w2xkciiI
# 2T1FbSwYe9QoLxPiWWobwgs0t4r96rmU7Acx5mr0dQTTp9peOgaeEP2pDb2cUUNv
# /2eUnOHPfPAksDXMg13u2sBvNknAWgpX9nPhnvPjCEw7Pi/M0s3uTyJw9wQfAqZL
# m7iPXIgONpRsMwe4qa1RoNDC3I4iEr3D34LXVqH33fClIFcQEJ3urIZ0bHGbwfDy
# wnBep9ttTTdYmU15QNA0XVolrmfrG05GBrCMKR+jEI+lM58j1fi1Rn3g7mOYkEs+
# BagvsBizWaSvQVOOCAUQLSrJOgZMHC6pMVFWZKyazKyXmCmKl5CH6p22MIIEujCC
# A6KgAwIBAgIKYQKSSgAAAAAAIDANBgkqhkiG9w0BAQUFADB3MQswCQYDVQQGEwJV
# UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UE
# ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEwHwYDVQQDExhNaWNyb3NvZnQgVGlt
# ZS1TdGFtcCBQQ0EwHhcNMTIwMTA5MjIyNTU5WhcNMTMwNDA5MjIyNTU5WjCBszEL
# MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
# bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjENMAsGA1UECxMETU9Q
# UjEnMCUGA1UECxMebkNpcGhlciBEU0UgRVNOOkI4RUMtMzBBNC03MTQ0MSUwIwYD
# VQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNlMIIBIjANBgkqhkiG9w0B
# AQEFAAOCAQ8AMIIBCgKCAQEAzWPD96K1R9n5OZRTrGuPpnk4IfTRbj0VOBbBcyyZ
# j/vgPFvhokyLsquLtPJKx7mTUNEm9YdTsHp180cPFytnLGTrYOdKjOCLXsRWaTc6
# KgRdFwHIv6m308mro5GogeM/LbfY5MR4AHk5z/3HZOIjEnieDHYnSY+arA504wZV
# VUnI7aF8cEVhfrJxFh7hwUG50tIy6VIk8zZQBNfdbzxJ1QvUdkD8ZWUTfpVROtX/
# uJqnV2tLFeU3WB/cAA3FrurfgUf58FKu5s9arOAUSqZxlID6/bAjMGDpg2CsDiQe
# /xHy56VVYpXun3+eKdbNSwp2g/BDBN8GSSDyU1pEsFF6OQIDAQABo4IBCTCCAQUw
# HQYDVR0OBBYEFM0ZrGFNlGcr9q+UdVnb8FgAg6E6MB8GA1UdIwQYMBaAFCM0+NlS
# RnAK7UD7dvuzK7DDNbMPMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly9jcmwubWlj
# cm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY3Jvc29mdFRpbWVTdGFtcFBD
# QS5jcmwwWAYIKwYBBQUHAQEETDBKMEgGCCsGAQUFBzAChjxodHRwOi8vd3d3Lm1p
# Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY3Jvc29mdFRpbWVTdGFtcFBDQS5jcnQw
# EwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZIhvcNAQEFBQADggEBAFEc1t82HdyA
# vAKnxpnfFsiQBmkVmjK582QQ0orzYikbeY/KYKmzXcTkFi01jESb8fRcYaRBrpqL
# ulDRanlqs2KMnU1RUAupjtS/ohDAR9VOdVKJHj+Wao8uQBQGcu4/cFmSXYXtg5n6
# goSe5AMBIROrJ9bMcUnl2h3/bzwJTtWNZugMyX/uMRQCN197aeyJPkV/JUTnHxrW
# xRrDSuTh8YSY50/5qZinGEbshGzsqQMK/Xx6Uh2ca6SoD5iSpJJ4XCt4432yx9m2
# cH3fW3NTv6rUZlBL8Mk7lYXlwUplnSVYULsgVJF5OhsHXGpXKK8xx5/nwx3uR/0n
# 13/PdNxlxT8wggW8MIIDpKADAgECAgphMyYaAAAAAAAxMA0GCSqGSIb3DQEBBQUA
# MF8xEzARBgoJkiaJk/IsZAEZFgNjb20xGTAXBgoJkiaJk/IsZAEZFgltaWNyb3Nv
# ZnQxLTArBgNVBAMTJE1pY3Jvc29mdCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
# eTAeFw0xMDA4MzEyMjE5MzJaFw0yMDA4MzEyMjI5MzJaMHkxCzAJBgNVBAYTAlVT
# MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK
# ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBDb2Rl
# IFNpZ25pbmcgUENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsnJZ
# XBkwZL8dmmAgIEKZdlNsPhvWb8zL8epr/pcWEODfOnSDGrcvoDLs/97CQk4j1XIA
# 2zVXConKriBJ9PBorE1LjaW9eUtxm0cH2v0l3511iM+qc0R/14Hb873yNqTJXEXc
# r6094CholxqnpXJzVvEXlOT9NZRyoNZ2Xx53RYOFOBbQc1sFumdSjaWyaS/aGQv+
# knQp4nYvVN0UMFn40o1i/cvJX0YxULknE+RAMM9yKRAoIsc3Tj2gMj2QzaE4BoVc
# TlaCKCoFMrdL109j59ItYvFFPeesCAD2RqGe0VuMJlPoeqpK8kbPNzw4nrR3XKUX
# no3LEY9WPMGsCV8D0wIDAQABo4IBXjCCAVowDwYDVR0TAQH/BAUwAwEB/zAdBgNV
# HQ4EFgQUyxHoytK0FlgByTcuMxYWuUyaCh8wCwYDVR0PBAQDAgGGMBIGCSsGAQQB
# gjcVAQQFAgMBAAEwIwYJKwYBBAGCNxUCBBYEFP3RMU7TJoqV4ZhgO6gxb6Y8vNgt
# MBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMB8GA1UdIwQYMBaAFA6sgmBAVieX
# 5SUT/CrhClOVWeSkMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwubWljcm9z
# b2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL21pY3Jvc29mdHJvb3RjZXJ0LmNybDBU
# BggrBgEFBQcBAQRIMEYwRAYIKwYBBQUHMAKGOGh0dHA6Ly93d3cubWljcm9zb2Z0
# LmNvbS9wa2kvY2VydHMvTWljcm9zb2Z0Um9vdENlcnQuY3J0MA0GCSqGSIb3DQEB
# BQUAA4ICAQBZOT5/Jkav629AsTK1ausOL26oSffrX3XtTDst10OtC/7L6S0xoyPM
# fFCYgCFdrD0vTLqiqFac43C7uLT4ebVJcvc+6kF/yuEMF2nLpZwgLfoLUMRWzS3j
# StK8cOeoDaIDpVbguIpLV/KVQpzx8+/u44YfNDy4VprwUyOFKqSCHJPilAcd8uJO
# +IyhyugTpZFOyBvSj3KVKnFtmxr4HPBT1mfMIv9cHc2ijL0nsnljVkSiUc356aNY
# Vt2bAkVEL1/02q7UgjJu/KSVE+Traeepoiy+yCsQDmWOmdv1ovoSJgllOJTxeh9K
# u9HhVujQeJYYXMk1Fl/dkx1Jji2+rTREHO4QFRoAXd01WyHOmMcJ7oUOjE9tDhNO
# PXwpSJxy0fNsysHscKNXkld9lI2gG0gDWvfPo2cKdKU27S0vF8jmcjcS9G+xPGeC
# +VKyjTMWZR4Oit0Q3mT0b85G1NMX6XnEBLTT+yzfH4qerAr7EydAreT54al/RrsH
# YEdlYEBOsELsTu2zdnnYCjQJbRyAMR/iDlTd5aH75UcQrWSY/1AWLny/BSF64pVB
# J2nDk4+VyY3YmyGuDVyc8KKuhmiDDGotu3ZrAB2WrfIWe/YWgyS5iM9qqEcxL5rc
# 43E91wB+YkfRzojJuBj6DnKNwaM9rwJAav9pm5biEKgQtDdQCNbDPTCCBgcwggPv
# oAMCAQICCmEWaDQAAAAAABwwDQYJKoZIhvcNAQEFBQAwXzETMBEGCgmSJomT8ixk
# ARkWA2NvbTEZMBcGCgmSJomT8ixkARkWCW1pY3Jvc29mdDEtMCsGA1UEAxMkTWlj
# cm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTA3MDQwMzEyNTMw
# OVoXDTIxMDQwMzEzMDMwOVowdzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
# bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
# b3JhdGlvbjEhMB8GA1UEAxMYTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBMIIBIjAN
# BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn6Fssd/bSJIqfGsuGeG94uPFmVEj
# UK3O3RhOJA/u0afRTK10MCAR6wfVVJUVSZQbQpKumFwwJtoAa+h7veyJBw/3DgSY
# 8InMH8szJIed8vRnHCz8e+eIHernTqOhwSNTyo36Rc8J0F6v0LBCBKL5pmyTZ9co
# 3EZTsIbQ5ShGLieshk9VUgzkAyz7apCQMG6H81kwnfp+1pez6CGXfvjSE/MIt1Nt
# UrRFkJ9IAEpHZhEnKWaol+TTBoFKovmEpxFHFAmCn4TtVXj+AZodUAiFABAwRu23
# 3iNGu8QtVJ+vHnhBMXfMm987g5OhYQK1HQ2x/PebsgHOIktU//kFw8IgCwIDAQAB
# o4IBqzCCAacwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUIzT42VJGcArtQPt2
# +7MrsMM1sw8wCwYDVR0PBAQDAgGGMBAGCSsGAQQBgjcVAQQDAgEAMIGYBgNVHSME
# gZAwgY2AFA6sgmBAVieX5SUT/CrhClOVWeSkoWOkYTBfMRMwEQYKCZImiZPyLGQB
# GRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0MS0wKwYDVQQDEyRNaWNy
# b3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCEHmtFqFKoKWtTHNY9AcT
# LmUwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3Br
# aS9jcmwvcHJvZHVjdHMvbWljcm9zb2Z0cm9vdGNlcnQuY3JsMFQGCCsGAQUFBwEB
# BEgwRjBEBggrBgEFBQcwAoY4aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9j
# ZXJ0cy9NaWNyb3NvZnRSb290Q2VydC5jcnQwEwYDVR0lBAwwCgYIKwYBBQUHAwgw
# DQYJKoZIhvcNAQEFBQADggIBABCXisNcA0Q23em0rXfbznlRTQGxLnRxW20ME6vO
# vnuPuC7UEqKMbWK4VwLLTiATUJndekDiV7uvWJoc4R0Bhqy7ePKL0Ow7Ae7ivo8K
# BciNSOLwUxXdT6uS5OeNatWAweaU8gYvhQPpkSokInD79vzkeJkuDfcH4nC8GE6d
# jmsKcpW4oTmcZy3FUQ7qYlw/FpiLID/iBxoy+cwxSnYxPStyC8jqcD3/hQoT38IK
# YY7w17gX606Lf8U1K16jv+u8fQtCe9RTciHuMMq7eGVcWwEXChQO0toUmPU8uWZY
# sy0v5/mFhsxRVuidcJRsrDlM1PZ5v6oYemIp76KbKTQGdxpiyT0ebR+C8AvHLLvP
# Q7Pl+ex9teOkqHQ1uE7FcSMSJnYLPFKMcVpGQxS8s7OwTWfIn0L/gHkhgJ4VMGbo
# QhJeGsieIiHQQ+kr6bv0SMws1NgygEwmKkgkX1rqVu+m3pmdyjpvvYEndAYR7nYh
# v5uCwSdUtrFqPYmhdmG0bqETpr+qR/ASb/2KMmyy/t9RyIwjyWa9nR2HEmQCPS2v
# WY+45CHltbDKY7R4VAXUQS5QrJSwpXirs6CWdRrZkocTdSIvMqgIbqBbjCW/oO+E
# yiHW6x5PyZruSeD3AWVviQt9yGnI5m7qp5fOMSn/DsVbXNhNG6HY+i+ePy5VFmvJ
# E6P9MYIEhTCCBIECAQEwgYcweTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
# bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
# b3JhdGlvbjEjMCEGA1UEAxMaTWljcm9zb2Z0IENvZGUgU2lnbmluZyBQQ0ECCmEZ
# zJMAAQAAAGYwCQYFKw4DAhoFAKCBsDAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIB
# BDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQU
# WQ2AdtM5zwQcEcFbsSevYrmN6UQwUAYKKwYBBAGCNwIBDDFCMECgIoAgAEUAbgB0
# AGkAdAB5ACAARgByAGEAbQBlAHcAbwByAGuhGoAYaHR0cDovL21zZG4uY29tL2Rh
# dGEvZWYgMA0GCSqGSIb3DQEBAQUABIIBAAp6IKF/Uj/9lpK3SAcA7JJxjVoqi+yI
# n0i9qNP5b4+zTSrtpnPDibOaQvhdUlEsAlEjnJTRCwYR9zobPyxJfGoh9j/qkgcU
# wWBIdmNhzMEzVDJwlE9puRipHQNP6ftcbaz9SOD40aOQ8skR9ecYuHW9SGG0levm
# m2Q/UWxmxVvtv6HnYzWUn6vHrJmiRk+t1ckG9Dxq2GPnBA+hGrRdYaijPBSwSWcg
# FnBsl4s88UVL7N8hpKYOQGnqGda6V1LJIgNPKoGNoPllFeJWXKgClvJ6majpd6dz
# o8S6A9a19D2Dh1l0cbwpI2ZFZjfY9UOVSH33i6fk7CM0aCVe9z3dcB+hggIfMIIC
# GwYJKoZIhvcNAQkGMYICDDCCAggCAQEwgYUwdzELMAkGA1UEBhMCVVMxEzARBgNV
# BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv
# c29mdCBDb3Jwb3JhdGlvbjEhMB8GA1UEAxMYTWljcm9zb2Z0IFRpbWUtU3RhbXAg
# UENBAgphApJKAAAAAAAgMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZI
# hvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xMjA2MjgyMDQzMzlaMCMGCSqGSIb3DQEJ
# BDEWBBTcH0Qic4YQ6MzFbjR1RWKCxjK8pzANBgkqhkiG9w0BAQUFAASCAQAdMhoS
# z2zXLJyB1RIjdnGlDxLKzXF+rxImjMI7VfId2vIg4FaGIPqnN0BBTp8o+HZCv3cM
# ZV/okS8w9k/82jWjJ183l9fn3moQe4qbVlV6yUJvPFpW47LFrEAXgdmL8bgA/VOW
# HtJRP52lPDsb7J1WjqNOh7KkyD5x0Y8Pwrb+Xc63ibtTjOeAttPxKk+1gZh95wUA
# ykjw7RKZLHfyJ9Ph5lCkzDQrXXwGGPuzaZVO+pkowgy2yCPRecShGBCKbCyOZlhT
# BS1WVJDHS95N732o0lPzWE5rTQe/awv8xkgCe9e8ci4S7/lSnj3aVOLbM3S8jG4x
# Oi4rxrjYTjts1n2P
# SIG # End signature block

+ 170
- 0
packages/EntityFramework.5.0.0/tools/install.ps1 View File

@ -0,0 +1,170 @@
param($installPath, $toolsPath, $package, $project)
function Invoke-ConnectionFactoryConfigurator($assemblyPath, $project)
{
$appDomain = [AppDomain]::CreateDomain(
'EntityFramework.PowerShell',
$null,
(New-Object System.AppDomainSetup -Property @{ ShadowCopyFiles = 'true' }))
$appDomain.CreateInstanceFrom(
$assemblyPath,
'System.Data.Entity.ConnectionFactoryConfig.ConnectionFactoryConfigurator',
$false,
0,
$null,
$project,
$null,
$null) | Out-Null
[AppDomain]::Unload($appDomain)
}
Invoke-ConnectionFactoryConfigurator (Join-Path $toolsPath EntityFramework.PowerShell.dll) $project
Write-Host
Write-Host "Type 'get-help EntityFramework' to see all available Entity Framework commands."
# SIG # Begin signature block
# MIIaRgYJKoZIhvcNAQcCoIIaNzCCGjMCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQU4nG54zEClXzFX9aYwYpo8BH3
# YWygghUtMIIEoDCCA4igAwIBAgIKYRnMkwABAAAAZjANBgkqhkiG9w0BAQUFADB5
# MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk
# bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSMwIQYDVQQDExpN
# aWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQTAeFw0xMTEwMTAyMDMyMjVaFw0xMzAx
# MTAyMDMyMjVaMIGDMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ
# MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
# MQ0wCwYDVQQLEwRNT1BSMR4wHAYDVQQDExVNaWNyb3NvZnQgQ29ycG9yYXRpb24w
# ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDuW759ESTjhgbgZv9ItRe9
# AuS0DDLwcj59LofXTqGxp0Mv92WeMeEyMUWu18EkhCHXLrWEfvo101Mc17ZRHk/O
# ZrnrtwwC/SlcraiH9soitNW/CHX1inCPY9fvih7pj0MkZFrTh32QbTusds1XNn3o
# vBBWrJjwiV0uZMavJgleHmMV8T2/Fo+ZiALDMLfBC2AfD3LM1reoNRKGm6ELCuaT
# W476VJzB8xlfQo0Snx0/kLcnE4MZMoId89mH1CGyPKK2B0/XJKrujfWz2fr5OU+n
# 6fKvWVL03EGbLxFwY93q3qrxbSEEEFMzu7JPxeFTskFlR2439rzpmxZBkWsuWzDD
# AgMBAAGjggEdMIIBGTATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUG1IO
# 8xEqt8CJwxGBPdSWWLmjU24wDgYDVR0PAQH/BAQDAgeAMB8GA1UdIwQYMBaAFMsR
# 6MrStBZYAck3LjMWFrlMmgofMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwu
# bWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY0NvZFNpZ1BDQV8wOC0z
# MS0yMDEwLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93
# d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljQ29kU2lnUENBXzA4LTMxLTIw
# MTAuY3J0MA0GCSqGSIb3DQEBBQUAA4IBAQClWzZsrU6baRLjb4oCm2l3w2xkciiI
# 2T1FbSwYe9QoLxPiWWobwgs0t4r96rmU7Acx5mr0dQTTp9peOgaeEP2pDb2cUUNv
# /2eUnOHPfPAksDXMg13u2sBvNknAWgpX9nPhnvPjCEw7Pi/M0s3uTyJw9wQfAqZL
# m7iPXIgONpRsMwe4qa1RoNDC3I4iEr3D34LXVqH33fClIFcQEJ3urIZ0bHGbwfDy
# wnBep9ttTTdYmU15QNA0XVolrmfrG05GBrCMKR+jEI+lM58j1fi1Rn3g7mOYkEs+
# BagvsBizWaSvQVOOCAUQLSrJOgZMHC6pMVFWZKyazKyXmCmKl5CH6p22MIIEujCC
# A6KgAwIBAgIKYQUZlgAAAAAAGzANBgkqhkiG9w0BAQUFADB3MQswCQYDVQQGEwJV
# UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UE
# ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEwHwYDVQQDExhNaWNyb3NvZnQgVGlt
# ZS1TdGFtcCBQQ0EwHhcNMTEwNzI1MjA0MjE5WhcNMTIxMDI1MjA0MjE5WjCBszEL
# MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
# bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjENMAsGA1UECxMETU9Q
# UjEnMCUGA1UECxMebkNpcGhlciBEU0UgRVNOOjlFNzgtODY0Qi0wMzlEMSUwIwYD
# VQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNlMIIBIjANBgkqhkiG9w0B
# AQEFAAOCAQ8AMIIBCgKCAQEA08s7U6KfRKN6q01WcVOKd6o3k34BPv2rAqNTqf/R
# sSLFAJDndW7uGOiBDhPF2GEAvh+gdjsEDQTFBKCo/ENTBqEEBLkLkpgCYjjv1DMS
# 9ys9e++tRVeFlSCf12M0nGJGjr6u4NmeOfapVf3P53fmNRPvXOi/SJNPGkMHWDiK
# f4UUbOrJ0Et6gm7L0xVgCBSJlKhbPzrJPyB9bS9YGn3Kiji8w8I5aNgtWBoj7SoQ
# CFogjIKl7dGXRZKFzMM3g98NmHzF07bgmVPYeAj15SMhB2KGWmppGf1w+VM0gfcl
# MRmGh4vAVZr9qkw1Ff1b6ZXJq1OYKV8speElD2TF8rAndQIDAQABo4IBCTCCAQUw
# HQYDVR0OBBYEFHkj56ENvlUsaBgpYoJn1vPhNjhaMB8GA1UdIwQYMBaAFCM0+NlS
# RnAK7UD7dvuzK7DDNbMPMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly9jcmwubWlj
# cm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY3Jvc29mdFRpbWVTdGFtcFBD
# QS5jcmwwWAYIKwYBBQUHAQEETDBKMEgGCCsGAQUFBzAChjxodHRwOi8vd3d3Lm1p
# Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY3Jvc29mdFRpbWVTdGFtcFBDQS5jcnQw
# EwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZIhvcNAQEFBQADggEBAEfCdoFbMd1v
# 0zyZ8npsfpcTUCwFFxsQuEShtYz0Vs+9sCG0ZG1hHNju6Ov1ku5DohhEw/r67622
# XH+XbUu1Q/snYXgIVHyx+a+YCrR0xKroLVDEff59TqGZ1icot67Y37GPgyKOzvN5
# /GEUbb/rzISw36O7WwW36lT1Yh1sJ6ZjS/rjofq734WWZWlTsLZxmGQmZr3F8Vxi
# vJH0PZxLQgANzzgFFCZa3CoFS39qmTjY3XOZos6MUCSepOv1P4p4zFSZXSVmpEEG
# KK9JxLRSlOzeAoNk/k3U/0ui/CmA2+4/qzztM4jKvyJg0Fw7BLAKtJhtPKc6T5rR
# ARYRYopBdqAwggW8MIIDpKADAgECAgphMyYaAAAAAAAxMA0GCSqGSIb3DQEBBQUA
# MF8xEzARBgoJkiaJk/IsZAEZFgNjb20xGTAXBgoJkiaJk/IsZAEZFgltaWNyb3Nv
# ZnQxLTArBgNVBAMTJE1pY3Jvc29mdCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
# eTAeFw0xMDA4MzEyMjE5MzJaFw0yMDA4MzEyMjI5MzJaMHkxCzAJBgNVBAYTAlVT
# MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK
# ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBDb2Rl
# IFNpZ25pbmcgUENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsnJZ
# XBkwZL8dmmAgIEKZdlNsPhvWb8zL8epr/pcWEODfOnSDGrcvoDLs/97CQk4j1XIA
# 2zVXConKriBJ9PBorE1LjaW9eUtxm0cH2v0l3511iM+qc0R/14Hb873yNqTJXEXc
# r6094CholxqnpXJzVvEXlOT9NZRyoNZ2Xx53RYOFOBbQc1sFumdSjaWyaS/aGQv+
# knQp4nYvVN0UMFn40o1i/cvJX0YxULknE+RAMM9yKRAoIsc3Tj2gMj2QzaE4BoVc
# TlaCKCoFMrdL109j59ItYvFFPeesCAD2RqGe0VuMJlPoeqpK8kbPNzw4nrR3XKUX
# no3LEY9WPMGsCV8D0wIDAQABo4IBXjCCAVowDwYDVR0TAQH/BAUwAwEB/zAdBgNV
# HQ4EFgQUyxHoytK0FlgByTcuMxYWuUyaCh8wCwYDVR0PBAQDAgGGMBIGCSsGAQQB
# gjcVAQQFAgMBAAEwIwYJKwYBBAGCNxUCBBYEFP3RMU7TJoqV4ZhgO6gxb6Y8vNgt
# MBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMB8GA1UdIwQYMBaAFA6sgmBAVieX
# 5SUT/CrhClOVWeSkMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwubWljcm9z
# b2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL21pY3Jvc29mdHJvb3RjZXJ0LmNybDBU
# BggrBgEFBQcBAQRIMEYwRAYIKwYBBQUHMAKGOGh0dHA6Ly93d3cubWljcm9zb2Z0
# LmNvbS9wa2kvY2VydHMvTWljcm9zb2Z0Um9vdENlcnQuY3J0MA0GCSqGSIb3DQEB
# BQUAA4ICAQBZOT5/Jkav629AsTK1ausOL26oSffrX3XtTDst10OtC/7L6S0xoyPM
# fFCYgCFdrD0vTLqiqFac43C7uLT4ebVJcvc+6kF/yuEMF2nLpZwgLfoLUMRWzS3j
# StK8cOeoDaIDpVbguIpLV/KVQpzx8+/u44YfNDy4VprwUyOFKqSCHJPilAcd8uJO
# +IyhyugTpZFOyBvSj3KVKnFtmxr4HPBT1mfMIv9cHc2ijL0nsnljVkSiUc356aNY
# Vt2bAkVEL1/02q7UgjJu/KSVE+Traeepoiy+yCsQDmWOmdv1ovoSJgllOJTxeh9K
# u9HhVujQeJYYXMk1Fl/dkx1Jji2+rTREHO4QFRoAXd01WyHOmMcJ7oUOjE9tDhNO
# PXwpSJxy0fNsysHscKNXkld9lI2gG0gDWvfPo2cKdKU27S0vF8jmcjcS9G+xPGeC
# +VKyjTMWZR4Oit0Q3mT0b85G1NMX6XnEBLTT+yzfH4qerAr7EydAreT54al/RrsH
# YEdlYEBOsELsTu2zdnnYCjQJbRyAMR/iDlTd5aH75UcQrWSY/1AWLny/BSF64pVB
# J2nDk4+VyY3YmyGuDVyc8KKuhmiDDGotu3ZrAB2WrfIWe/YWgyS5iM9qqEcxL5rc
# 43E91wB+YkfRzojJuBj6DnKNwaM9rwJAav9pm5biEKgQtDdQCNbDPTCCBgcwggPv
# oAMCAQICCmEWaDQAAAAAABwwDQYJKoZIhvcNAQEFBQAwXzETMBEGCgmSJomT8ixk
# ARkWA2NvbTEZMBcGCgmSJomT8ixkARkWCW1pY3Jvc29mdDEtMCsGA1UEAxMkTWlj
# cm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTA3MDQwMzEyNTMw
# OVoXDTIxMDQwMzEzMDMwOVowdzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
# bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
# b3JhdGlvbjEhMB8GA1UEAxMYTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBMIIBIjAN
# BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn6Fssd/bSJIqfGsuGeG94uPFmVEj
# UK3O3RhOJA/u0afRTK10MCAR6wfVVJUVSZQbQpKumFwwJtoAa+h7veyJBw/3DgSY
# 8InMH8szJIed8vRnHCz8e+eIHernTqOhwSNTyo36Rc8J0F6v0LBCBKL5pmyTZ9co
# 3EZTsIbQ5ShGLieshk9VUgzkAyz7apCQMG6H81kwnfp+1pez6CGXfvjSE/MIt1Nt
# UrRFkJ9IAEpHZhEnKWaol+TTBoFKovmEpxFHFAmCn4TtVXj+AZodUAiFABAwRu23
# 3iNGu8QtVJ+vHnhBMXfMm987g5OhYQK1HQ2x/PebsgHOIktU//kFw8IgCwIDAQAB
# o4IBqzCCAacwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUIzT42VJGcArtQPt2
# +7MrsMM1sw8wCwYDVR0PBAQDAgGGMBAGCSsGAQQBgjcVAQQDAgEAMIGYBgNVHSME
# gZAwgY2AFA6sgmBAVieX5SUT/CrhClOVWeSkoWOkYTBfMRMwEQYKCZImiZPyLGQB
# GRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0MS0wKwYDVQQDEyRNaWNy
# b3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCEHmtFqFKoKWtTHNY9AcT
# LmUwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3Br
# aS9jcmwvcHJvZHVjdHMvbWljcm9zb2Z0cm9vdGNlcnQuY3JsMFQGCCsGAQUFBwEB
# BEgwRjBEBggrBgEFBQcwAoY4aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9j
# ZXJ0cy9NaWNyb3NvZnRSb290Q2VydC5jcnQwEwYDVR0lBAwwCgYIKwYBBQUHAwgw
# DQYJKoZIhvcNAQEFBQADggIBABCXisNcA0Q23em0rXfbznlRTQGxLnRxW20ME6vO
# vnuPuC7UEqKMbWK4VwLLTiATUJndekDiV7uvWJoc4R0Bhqy7ePKL0Ow7Ae7ivo8K
# BciNSOLwUxXdT6uS5OeNatWAweaU8gYvhQPpkSokInD79vzkeJkuDfcH4nC8GE6d
# jmsKcpW4oTmcZy3FUQ7qYlw/FpiLID/iBxoy+cwxSnYxPStyC8jqcD3/hQoT38IK
# YY7w17gX606Lf8U1K16jv+u8fQtCe9RTciHuMMq7eGVcWwEXChQO0toUmPU8uWZY
# sy0v5/mFhsxRVuidcJRsrDlM1PZ5v6oYemIp76KbKTQGdxpiyT0ebR+C8AvHLLvP
# Q7Pl+ex9teOkqHQ1uE7FcSMSJnYLPFKMcVpGQxS8s7OwTWfIn0L/gHkhgJ4VMGbo
# QhJeGsieIiHQQ+kr6bv0SMws1NgygEwmKkgkX1rqVu+m3pmdyjpvvYEndAYR7nYh
# v5uCwSdUtrFqPYmhdmG0bqETpr+qR/ASb/2KMmyy/t9RyIwjyWa9nR2HEmQCPS2v
# WY+45CHltbDKY7R4VAXUQS5QrJSwpXirs6CWdRrZkocTdSIvMqgIbqBbjCW/oO+E
# yiHW6x5PyZruSeD3AWVviQt9yGnI5m7qp5fOMSn/DsVbXNhNG6HY+i+ePy5VFmvJ
# E6P9MYIEgzCCBH8CAQEwgYcweTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
# bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
# b3JhdGlvbjEjMCEGA1UEAxMaTWljcm9zb2Z0IENvZGUgU2lnbmluZyBQQ0ECCmEZ
# zJMAAQAAAGYwCQYFKw4DAhoFAKCBsDAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIB
# BDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQU
# aRQ2a/UgAzqOb3Wvyd0Y2tRWtIEwUAYKKwYBBAGCNwIBDDFCMECgIoAgAEUAbgB0
# AGkAdAB5ACAARgByAGEAbQBlAHcAbwByAGuhGoAYaHR0cDovL21zZG4uY29tL2Rh
# dGEvZWYgMA0GCSqGSIb3DQEBAQUABIIBAMQdz1xbjYGj57Z6LNm3laDw2S6QJFye
# QUSbvlY7kcxqlHQrERkp3wwR34emJSnTayLTcTPaCCvzUaGsZi86i+IW6HdA/3A/
# IwEZgAkai/qXZCYEEBvV9ja+iMRowFPAySU+ROh4LFbCTLzm4vez6qaLyui/JQNr
# 46DZptV5XM0idAbgOfmtCMMipqRkrNqt7Zj8cuxu3cJBKOvhUOdLfEIxq1UW9pNy
# 8c/aOStE0kLFInw3G1GL9IJnS43eTcgeIDMkrwX70o+rLS7lN1U3txL25IrBTUcY
# Q6dxj4zSDxIjn3Tq2jqa8B6lR1OMEahj4INmR6vC+mFNspHODHWgt7GhggIdMIIC
# GQYJKoZIhvcNAQkGMYICCjCCAgYCAQEwgYUwdzELMAkGA1UEBhMCVVMxEzARBgNV
# BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv
# c29mdCBDb3Jwb3JhdGlvbjEhMB8GA1UEAxMYTWljcm9zb2Z0IFRpbWUtU3RhbXAg
# UENBAgphBRmWAAAAAAAbMAcGBSsOAwIaoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3
# DQEHATAcBgkqhkiG9w0BCQUxDxcNMTIwNjI4MjA0MzU0WjAjBgkqhkiG9w0BCQQx
# FgQUlE+8FmmwI9Hd6gz+luAdOPsKxHgwDQYJKoZIhvcNAQEFBQAEggEAiJCupwRm
# YW3NHK2EdgaQ+VCIjXwVrEj6ElX4c30nAYXxnCOIesErL/N/jMYnM3Fo+GNsOikL
# x9Mzo4sZv/c6bchLtnagS6MzQyDFiBPF+pngSMg2PpIDHsIBg2vPzClWx6+hCDxE
# Yf9f7/s/vQEpEbHLjzQZJqoji2LV5HRxnHbT3J13atUF2yqgzyTRlOF2MPp3vLX1
# 7q5KnOBrWsfyxoYskJEddsbH7zilomWyVZ2zcpG8Ui/h2xoN50AXtMQntx9VYxwT
# D5U5ECSdKzXeUIwktYBPtxor5yGBda63PNxjUHYXSRvFrdnLtXTiMiIQzEzJUdk9
# 6p75IHbjyjvZfg==
# SIG # End signature block

BIN
packages/EntityFramework.5.0.0/tools/migrate.exe View File


BIN
packages/EntityFramework.zh-Hans.5.0.0/EntityFramework.zh-Hans.5.0.0.nupkg View File


BIN
packages/EntityFramework.zh-Hans.5.0.0/lib/net40/zh-Hans/EntityFramework.resources.dll View File


+ 5536
- 0
packages/EntityFramework.zh-Hans.5.0.0/lib/net40/zh-Hans/EntityFramework.xml
File diff suppressed because it is too large
View File


BIN
packages/EntityFramework.zh-Hans.5.0.0/lib/net45/zh-Hans/EntityFramework.resources.dll View File


+ 5536
- 0
packages/EntityFramework.zh-Hans.5.0.0/lib/net45/zh-Hans/EntityFramework.xml
File diff suppressed because it is too large
View File


BIN
packages/Microsoft.AspNet.Mvc.4.0.30506.0/Microsoft.AspNet.Mvc.4.0.30506.0.nupkg View File


BIN
packages/Microsoft.AspNet.Mvc.4.0.30506.0/lib/net40/System.Web.Mvc.dll View File


+ 10254
- 0
packages/Microsoft.AspNet.Mvc.4.0.30506.0/lib/net40/System.Web.Mvc.xml
File diff suppressed because it is too large
View File


BIN
packages/Microsoft.AspNet.Mvc.4.0.30506.0/lib/net40/zh-Hans/System.Web.Mvc.resources.dll View File


+ 10545
- 0
packages/Microsoft.AspNet.Mvc.4.0.30506.0/lib/net40/zh-Hans/System.Web.Mvc.xml
File diff suppressed because it is too large
View File


BIN
packages/Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0/Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0.nupkg View File


BIN
packages/Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0/lib/net40/Microsoft.Web.Mvc.FixedDisplayModes.dll View File


BIN
packages/Microsoft.AspNet.Mvc.zh-Hans.4.0.30506.0/Microsoft.AspNet.Mvc.zh-Hans.4.0.30506.0.nupkg View File


BIN
packages/Microsoft.AspNet.Mvc.zh-Hans.4.0.30506.0/lib/net40/zh-Hans/System.Web.Mvc.resources.dll View File


+ 10545
- 0
packages/Microsoft.AspNet.Mvc.zh-Hans.4.0.30506.0/lib/net40/zh-Hans/System.Web.Mvc.xml
File diff suppressed because it is too large
View File


BIN
packages/Microsoft.AspNet.Providers.Core.1.2/Microsoft.AspNet.Providers.Core.1.2.nupkg View File


BIN
packages/Microsoft.AspNet.Providers.Core.1.2/lib/net40/System.Web.Providers.dll View File


BIN
packages/Microsoft.AspNet.Providers.Core.1.2/lib/net40/zh-Hans/System.Web.Providers.resources.dll View File


+ 377
- 0
packages/Microsoft.AspNet.Providers.Core.1.2/readme.html View File

@ -0,0 +1,377 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>ASP.NET Universal Providers Readme</title>
<style type="text/css">
body{
margin-left:1in;
margin-top:.75in;
margin-right:1.7in;
font-family:calibri;
font-size:11pt;
line-height:1.15em;
background-color:white;
}
h1{
margin-left:-.2in;
font-family:Arial, Verdana, sans-serif;
font-size:20pt;
}
h2{
margin-left:-.2in;
margin-top:1.8em;
font-family:Arial, Verdana, sans-serif;
font-size:16pt;
}
h3{
margin-left:-.2in;
font-family:Verdana, sans-serif;
font-size:13.5pt;
}
table{
border:thin gray groove;
}
thead{
background-color:black;
color:white;
font-weight:bold;
text-align:center;
}
td{
border:1px solid black;
}
p.indent1{
margin-left:.25in;
}
code{
font-family:"Courier New";
font-size:10pt;
color:#006600;
}
pre{
font-family:"Courier New";
font-size:10pt;
padding:8px;
color:#006600;
}
span.highlight{
background-color:Yellow;
}
</style>
</head>
<body>
<h1>ASP.NET Universal Providers</h1>
<p>Last update: 15 August 2012</p>
<p>The
<a href="http://msdn.microsoft.com/en-us/library/system.web.security.sqlmembershipprovider.aspx">SqlMembershipProvider</a>,
<a href="http://msdn.microsoft.com/en-us/library/system.web.security.sqlroleprovider.aspx">SqlRoleProvider</a>,
<a href="http://msdn.microsoft.com/en-us/library/system.web.profile.sqlprofileprovider.aspx">SqlProfileProvider</a> classes that shipped in ASP.NET through version 4 support only Microsoft SQL Server and Microsoft SQL Server Express. They do not support newer offerings such as
<a href="http://msdn.microsoft.com/en-us/library/ee336241.aspx">Microsoft SQL Azure</a> and
<a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=033cfb76-5382-44fb-bc7e-b3c8174832e2">Microsoft SQL Server Compact</a>. </p>
<p>ASP.NET Universal Providers have been created in order to extend support to all editions of SQL Server 2005 and later and to SQL Azure. If you use these providers to develop your application, the application will be ready for cloud environments like Azure.</p>
<p>Other than supporting additional storage options, the providers work like the existing SQL-based providers. Except as noted below, using ASP.NET Universal Providers requires no change in any of your applications.</p>
<ul>
<li><a href="#Installing_and_Configuring_ASP.NET_Unive">Installing and
Configuring ASP.NET Universal Providers</a></li>
<li><a href="#Selecting_a_Data_Store">Selecting a Data Store</a></li>
<li><a href="#Storing_Data_in_Session_State_using_ASP">Storing Data in
Session State using ASP.NET Universal Providers</a></li>
<li><a href="#Deploying_to_a_Cloud_Environment">Deploying to a Cloud
Environment</a></li>
<li><a href="#Known_Issues">Known Issues</a></li>
<li><a href="#Additional_Resources">Additional Resources</a></li>
<li><a href="#Disclaimer">Disclaimer</a><br />
</li>
</ul>
<h2><a name="Installing_and_Configuring_ASP.NET_Unive">Installing and Configuring ASP.NET Universal Providers</a></h2>
<p>To install ASP.NET Universal Providers, you use a NuGet package, which installs all required files (including this documentation). The NuGet package automatically enables the new providers when it is installed. By default, the NuGet package configures provider to use SQL Server Express. To use SQL Server Compact or SQL Azure, you must change the connection string for the provider, as explained
<a href="#Selecting_a_Data_Store">later in this document</a>.</p>
<p>To enable the providers, the NuGet package adds configuration entries in the
<em>web.config</em> file. The configuration for these providers is the same as the existing
<code>SqlMembershipProvider</code> class, but the <code>type</code> parameter is set to the type of the new providers, as shown in the following table:</p>
<table>
<thead>
<td>SQL Provider Types</td>
<td>Equivalent Type for Universal Providers</td>
</thead>
<tr>
<td ><code>System.Web.Security.SqlMembershipProvider</code></td>
<td ><code>System.Web.Providers.DefaultMembershipProvider</code></td>
</tr>
<tr>
<td><code>System.Web.Profile.SqlProfileProvider</code></td>
<td><code>System.Web.Providers.DefaultProfileProvider</code></td>
</tr>
<tr>
<td><code>System.Web.Security.SqlRoleProvider</code></td>
<td><code>System.Web.Providers.DefaultRoleProvider</code></td>
</tr>
<tr>
<td>(Built into default provider)</td>
<td><code>System.Web.Providers.DefaultSessionStateProvider</code></td>
</tr>
</table>
<p>In the <em>web.config</em> file, the configuration looks like the following example (the connection string has been wrapped for readability). The differences from the configuration for older SQL-based providers are highlighted. Notice that a section has been added to define custom session-state handling using a custom provider, as described later under
<a href="#Storing_Data_in_Session_State_using_ASP">Storing Data in Session State using ASP.NET Universal Providers</a>.</p>
<pre>&lt;configuration&gt;
&lt;connectionStrings&gt;
&lt;add name="DefaultConnection"
connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnetdb;Integrated Security=True"
providerName="System.Data.SqlClient" /&gt;
&lt;/connectionStrings&gt;
&lt;system.web&gt;
&lt;membership <span class="highlight">defaultProvider="DefaultMembershipProvider"</span>&gt;
&lt;providers&gt;
&lt;clear /&gt;
&lt;add name="DefaultMembershipProvider"
<span class="highlight">type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
</span> connectionStringName="DefaultConnection"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
applicationName="/" /&gt;
&lt;/providers&gt;
&lt;/membership&gt;
&lt;profile <span class="highlight">defaultProvider="DefaultProfileProvider"</span>&gt;
&lt;providers&gt;
&lt;clear /&gt;
&lt;add name="DefaultProfileProvider"
<span class="highlight">type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
</span> connectionStringName="DefaultConnection"
applicationName="/" /&gt;
&lt;/providers&gt;
&lt;/profile&gt;
&lt;roleManager <span class="highlight">defaultProvider="DefaultRoleProvider"</span> enabled="false"&gt;
&lt;providers&gt;
&lt;clear /&gt;
&lt;add name="DefaultRoleProvider"
<span class="highlight">type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
</span> connectionStringName="DefaultConnection"
applicationName="/" /&gt;
&lt;/providers&gt;
&lt;/roleManager&gt;
&lt;sessionState mode="Custom" customProvider="DefaultSessionProvider"&gt;
&lt;providers&gt;
&lt;add name="DefaultSessionProvider"
<span class="highlight">type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
</span> connectionStringName="DefaultConnection"
applicationName="/" /&gt;
&lt;/providers&gt;
&lt;/sessionState&gt;
&lt;/system.web&gt;&nbsp;</pre>
<h2><a name="Selecting_a_Data_Store">Selecting a Data Store</a></h2>
<p>If you want to use SQL Server LocalDB database,change the connection string as shown in the following example:</p>
<pre>
&lt;connectionStrings&gt;
&lt;add name="DefaultConnection" providerName="System.Data.SqlClient"
connectionString="Data Source=(LocalDb)\v11.0;
Initial Catalog=aspnet-ProjectName-GUID;Integrated Security=SSPI;
AttachDBFilename=|DataDirectory|\aspnet-ProjectName-GUID.mdf" /&gt;
&lt;connectionStrings&gt;
</pre>
<p>If you want to use SQL Server Express database,change the connection string as shown in the following example:</p>
<pre>
&lt;connectionStrings&gt;
&lt;add name="DefaultConnection" providerName="System.Data.SqlClient"
connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnetdb;
Integrated Security=True" providerName="System.Data.SqlClient"/&gt;
&lt;connectionStrings&gt;
</pre>
<p>If you want to use SQL Server Compact, change the connection string as shown in the following example:</p>
<pre>&lt;connectionStrings&gt;
&lt;add name="DefaultConnection" connectionString="Data Source=|DataDirectory|\aspnet.sdf"
providerName="System.Data.SqlServerCe.4.0"/&gt;
&lt;/connectionStrings&gt;</pre>
<p>If you want to use SQL Azure, change the connection string as shown in the
following example (wrapped for readability):</p>
<pre>&lt;connectionStrings&gt;
&lt;add name="DefaultConnection"
connectionString="data source=myDNSName;
User ID=myUserName;Password=myPassword;
Encrypt=true;Trusted_Connection=false=false"
providerName="System.Data.SqlClient"/&gt;
&lt;connectionStrings&gt;</pre>
<h2><a name="Storing_Data_in_Session_State_using_ASP">Storing Data in Session State using ASP.NET Universal Providers</a></h2>
<p>By default, ASP.NET stores session data using an in-process (in-memory) session provider. This provider allows you to put any object in session state, because session state simply holds a reference to the object, not the object itself.</p>
<p>However, cloud environments might run your application on multiple computers. Therefore, for cloud-based applications, the application must store session state in some form of storage (like a database) that be accessed by more than one machine. This puts some restrictions on what data you store in session state — essentially, the data must be serializable. </p>
<p>When you install ASP.NET Universal Providers, the installation process configures session state to use the
<code>System.Web.Providers.DefaultSessionStateProvider</code> type, as shown in the
<em>web.config</em> file example earlier. This type stores session state in a database.</p>
<p>Session data must be serializable. If you attempt to store something in session state that is not serializable, you will receive the following error: </p>
<p class="indent1"><code>Unable to serialize the session state. In 'StateServer' and 'SQLServer' mode, ASP.NET will serialize the session state objects, and as a result non-serializable objects or MarshalByRef objects are not permitted. the same restriction applies if similar serialization is done by the custom session state store in 'Custom' mode. </code></p>
<p>There are two ways to resolve this issue: by marking the type as serializable or by using a surrogate serializer.</p>
<h3>Marking Types as Serializable</h3>
<p>If you have access to the source code for the type that is being stored in session state, you can mark the type using the
<code>Serializable</code> attribute, as in the following example. If the type contains additional classes, all the contained classes must be serializable as well.</p>
<pre><span class="highlight">[Serializable]</span>
public class Address { }
<span class="highlight">[Serializable]</span>
public class Person {
public Address Work;
public Address Home;
}</pre>
<h3>Using a Surrogate Serializer in .NET Framework 4.5</h3>
<p>If it's not practical to mark the type as serializable in source code, and if you are using .NET Framework 4.5, you can use a surrogate serializer. (This technique does not work in .NET Framework 4.)</p>
<p>Create a class that implements the
<a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializationsurrogate.aspx">ISerializationSurrogate</a> interface. In this class, you implement
<a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializationsurrogate.getobjectdata.aspx">GetObjectData</a> and
<a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializationsurrogate.setobjectdata.aspx">SetObjectData</a> methods in order to serialize and deserialze the data, respectively. In
<code>GetObjectData</code> you invoke
<a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.serializationinfo.addvalue.aspx">SerializationInfo.AddValue</a> (using the appropriate overload for the data type of your data) to add individual fields of the object to serialize to a
<a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.serializationinfo.aspx">SerializationInfo</a> object. In
<code>SetObjectData</code> you extract the serialized version back to its original value in the object. Here's an example:</p>
<pre>public class EmployeeSerializationSurrogate : ISerializationSurrogate
{
// Serialize the Employee object to save the object name and address fields.
public void GetObjectData(Object obj, SerializationInfo info, StreamingContext context)
{
Employee emp = (Employee)obj;
info.AddValue("name", emp.name);
info.AddValue("address", emp.address);
}
// Deserialize the Employee object to set the object name and address fields.
public Object SetObjectData(Object obj, SerializationInfo info, StreamingContext context,
ISurrogateSelector selector)
{
Employee emp = (Employee)obj;
emp.name = info.GetString("name");
emp.address = info.GetString("address");
return null;
}
}</pre>
<p>You then register the serializer and the class to be serialized using the
<a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.surrogateselector.aspx">SurrogateSelector</a> class in code, like this:</p>
<pre>protected void Page_Load(object sender, EventArgs e)
{
SurrogateSelector ss = new SurrogateSelector();
ss.AddSurrogate(typeof(Employee), new StreamingContext(StreamingContextStates.All), new EmployeeSerializationSurrogate());
SessionStateUtility.SerializationSurrogateSelector = ss;
}</pre>
<h2><a name="Deploying_to_a_Cloud_Environment">Deploying to a Cloud Environment</a></h2>
<p>If you are deploying to a cloud environment that has multiple web server instances, you should change session state mode from "InProc" to "Custom". In addition, change the connection string named "DefaultConnection" to connect to an instance of SQL Server (including SQL Azure and SQL Compact) instead of to SQL Server Express.</p>
<h2><a name="Known_Issues">Known Issues</a></h2>
<ul>
<li>
<p>During the installation process, NuGet performs an exact match on items in the
<em>web.config</em> file. If you have customized any of the elements in <em>web.config</em> that are updated by the installation process for ASP.NET Universal Providers, the installation process will not find these elements. Instead of updating the elements, the installation process will assume that they do not exist and add them. As a result, the
<em>web.config</em> will effectively contain duplicate elements.</p>
<p>If your application is experiencing issues that indicate problems in the <em>web.config</em> file, make sure that the file contains the elements that are illustrated earlier in this document and remove any duplicate elements.</p>
</li>
<li>
<p>If you are working in Visual Studio and use <strong>Server Explorer</strong> to open the database that contains the membership, role, profile, or session provider tables, and if you then try to run the application, you might see an error like the following: </p>
<p><code>Cannot open database "aspnet" requested by the login. The login failed. Login failed for user 'yourname.'</code></p>
<p>To resolve this issue, right-click the database in <strong>Server Explorer</strong> and then click
<strong>Close Connection</strong>. </p>
</li>
<li>
<p>The new providers do not use the same tables, stored procedures, and database objects as the SQL-based providers. If you switch to the new providers in an existing application, the data from the existing tables will not be available. We are considering creating a conversion utility to help you move existing applications to the new providers.</p>
</li>
<li>
<p>Web Parts personalization will not work with Universal Providers. You must use the SQL Personalization provider. That in turn does not work with LocalDB, so you must use SQL Server Express.</p>
</li>
<li>
<p>This release requires that the ASP.NET application be running under full trust.</p>
</li>
</ul>
<h2><a name="Additional_Resources">Additional Resources</a></h2>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/tw292whz.aspx">Managing Users by Using Membership</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/9ab2fxh0.aspx">Managing Authorization Using Roles</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/014bec1k.aspx">ASP.NET Profile Providers</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/ee336241.aspx">Microsoft SQL Azure</a></li>
<li>
<a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=033cfb76-5382-44fb-bc7e-b3c8174832e2">Microsoft SQL Server Compact</a></li>
<li>
<a href="http://docs.nuget.org/docs/creating-packages/configuration-file-and-source-code-transformations">Configuration File and Source Code Transformations</a></li>
<li><a href="http://go.microsoft.com/fwlink/?LinkId=261899">Migration for user accounts from the SQL MembershipProvider to the Universal Providers</a></li>
</ul>
<h2><a name="Disclaimer">Disclaimer</a></h2>
<p>This is a preliminary document and may be changed substantially prior to final commercial release of the software described herein.</p>
<p>The information contained in this document represents the current view of Microsoft Corporation on the issues discussed as of the date of publication. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information presented after the date of publication.</p>
<p>This White Paper is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT.
<p>Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without the express written permission of Microsoft Corporation.</p>
<p>Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Microsoft, the furnishing of this document does not give you any license to these patents, trademarks, copyrights, or other intellectual property.</p>
<p>Unless otherwise noted, the example companies, organizations, products, domain names, e-mail addresses, logos, people, places and events depicted herein are fictitious, and no association with any real company, organization, product, domain name, email address, logo, person, place or event is intended or should be inferred.</p>
<p>&copy; 2011 Microsoft Corporation. All rights reserved.</p>
<p>Microsoft and Windows are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.</p>
<p>The names of actual companies and products mentioned herein may be the trademarks of their respective owners.</p>
</body>
</html>

BIN
packages/Microsoft.AspNet.Providers.Core.zh-Hans.1.2/Microsoft.AspNet.Providers.Core.zh-Hans.1.2.nupkg View File


BIN
packages/Microsoft.AspNet.Providers.Core.zh-Hans.1.2/lib/net40/zh-Hans/System.Web.Providers.resources.dll View File


BIN
packages/Microsoft.AspNet.Providers.LocalDB.1.1/Microsoft.AspNet.Providers.LocalDB.1.1.nupkg View File


+ 33
- 0
packages/Microsoft.AspNet.Providers.LocalDB.1.1/content/web.config.transform View File

@ -0,0 +1,33 @@
<configuration>
<system.web>
<profile defaultProvider="DefaultProfileProvider" >
<providers>
<add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/"/>
</providers>
</profile>
<membership defaultProvider="DefaultMembershipProvider">
<providers>
<add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
<roleManager defaultProvider="DefaultRoleProvider">
<providers>
<add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
</providers>
</roleManager>
<!--
If you are deploying to a cloud environment that has multiple web server instances,
you should change session state mode from "InProc" to "Custom". In addition,
change the connection string named "DefaultConnection" to connect to an instance
of SQL Server (including SQL Azure and SQL Compact) instead of to SQL Server Express.
-->
<sessionState mode="InProc" customProvider="DefaultSessionProvider">
<providers>
<add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection"/>
</providers>
</sessionState>
</system.web>
</configuration>

+ 211
- 0
packages/Microsoft.AspNet.Providers.LocalDB.1.1/tools/Install.ps1 View File

@ -0,0 +1,211 @@
param($installPath, $toolsPath, $package, $project)
try {
# Set up variables
$timestamp = (Get-Date).ToString('yyyyMMddHHmmss')
$projectName = [IO.Path]::GetFileName($project.ProjectName.Trim([IO.PATH]::DirectorySeparatorChar, [IO.PATH]::AltDirectorySeparatorChar))
$catalogName = "aspnet-$projectName-$timestamp"
$connectionString ="Data Source=(LocalDb)\v11.0;Initial Catalog=$catalogName;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\$catalogName.mdf"
$connectionStringToken = 'Data Source=(LocalDb)\v11.0;'
$config = $project.ProjectItems | Where-Object { $_.Name -eq "Web.config" }
$configPath = ($config.Properties | Where-Object { $_.Name -eq "FullPath" }).Value
#Load the Config File
$xml = New-Object System.Xml.XmlDocument
$xml.Load($configPath)
function CommentNode($node) {
if (!$node) {
return;
}
$commentNode = $xml.CreateComment($node.OuterXml)
$parent = $node.ParentNode
$parent.InsertBefore($commentNode, $node) | Out-Null
$parent.RemoveChild($node) | Out-Null
}
# Comment out older providers
$node = $xml.SelectSingleNode("/configuration/system.web/membership/providers/add[@type='System.Web.Security.SqlMembershipProvider']")
$oldConnectionNode = $xml.SelectSingleNode("/configuration/connectionStrings/add[@name='$($node.connectionStringName)']")
CommentNode $node
CommentNode $oldConnectionNode
$node = $xml.SelectSingleNode("/configuration/system.web/profile/providers/add[@type='System.Web.Profile.SqlProfileProvider']")
$oldConnectionNode = $xml.SelectSingleNode("/configuration/connectionStrings/add[@name='$($node.connectionStringName)']")
CommentNode $node
CommentNode $oldConnectionNode
$node = $xml.SelectSingleNode("/configuration/system.web/roleManager/providers/add[@type='System.Web.Security.SqlRoleProvider']")
$oldConnectionNode = $xml.SelectSingleNode("/configuration/connectionStrings/add[@name='$($node.connectionStringName)']")
$connectionStringsToComment += $node.connectionStringName
CommentNode $node
CommentNode $oldConnectionNode
# Verify that the connectionStrings node exists
$connectionStrings = $xml.SelectSingleNode("/configuration/connectionStrings")
if (!$connectionStrings) {
$connectionStrings = $xml.CreateElement("connectionStrings")
$xml.configuration.AppendChild($connectionStrings) | Out-Null
}
if (!($connectionStrings.SelectNodes("add[@name='DefaultConnection']") | Where { $_.connectionString.StartsWith($connectionStringToken, 'OrdinalIgnoreCase') })) {
# If there aren't any connection strings that look like ours, proceed to add one
$newConnectionNode = $xml.CreateElement("add")
$newConnectionNode.SetAttribute("name", 'DefaultConnection')
$newConnectionNode.SetAttribute("providerName", "System.Data.SqlClient")
$newConnectionNode.SetAttribute("connectionString", $connectionString)
$connectionStrings.AppendChild($newConnectionNode) | Out-Null
}
# Save the Config File
$xml.Save($configPath)
} catch {
Write-Error "Unable to update the web.config file at $configPath. Add the following connection string to your config: <add name=`"DefaultConnection`" providerName=`"System.Data.SqlClient`" connectionString=`"$connectionString`" />"
}
# SIG # Begin signature block
# MIIaRAYJKoZIhvcNAQcCoIIaNTCCGjECAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUCI4oa6SQz5TLmVruHOoK6N6p
# eUqgghUtMIIEoDCCA4igAwIBAgIKYRnMkwABAAAAZjANBgkqhkiG9w0BAQUFADB5
# MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk
# bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSMwIQYDVQQDExpN
# aWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQTAeFw0xMTEwMTAyMDMyMjVaFw0xMzAx
# MTAyMDMyMjVaMIGDMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ
# MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
# MQ0wCwYDVQQLEwRNT1BSMR4wHAYDVQQDExVNaWNyb3NvZnQgQ29ycG9yYXRpb24w
# ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDuW759ESTjhgbgZv9ItRe9
# AuS0DDLwcj59LofXTqGxp0Mv92WeMeEyMUWu18EkhCHXLrWEfvo101Mc17ZRHk/O
# ZrnrtwwC/SlcraiH9soitNW/CHX1inCPY9fvih7pj0MkZFrTh32QbTusds1XNn3o
# vBBWrJjwiV0uZMavJgleHmMV8T2/Fo+ZiALDMLfBC2AfD3LM1reoNRKGm6ELCuaT
# W476VJzB8xlfQo0Snx0/kLcnE4MZMoId89mH1CGyPKK2B0/XJKrujfWz2fr5OU+n
# 6fKvWVL03EGbLxFwY93q3qrxbSEEEFMzu7JPxeFTskFlR2439rzpmxZBkWsuWzDD
# AgMBAAGjggEdMIIBGTATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUG1IO
# 8xEqt8CJwxGBPdSWWLmjU24wDgYDVR0PAQH/BAQDAgeAMB8GA1UdIwQYMBaAFMsR
# 6MrStBZYAck3LjMWFrlMmgofMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwu
# bWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY0NvZFNpZ1BDQV8wOC0z
# MS0yMDEwLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93
# d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljQ29kU2lnUENBXzA4LTMxLTIw
# MTAuY3J0MA0GCSqGSIb3DQEBBQUAA4IBAQClWzZsrU6baRLjb4oCm2l3w2xkciiI
# 2T1FbSwYe9QoLxPiWWobwgs0t4r96rmU7Acx5mr0dQTTp9peOgaeEP2pDb2cUUNv
# /2eUnOHPfPAksDXMg13u2sBvNknAWgpX9nPhnvPjCEw7Pi/M0s3uTyJw9wQfAqZL
# m7iPXIgONpRsMwe4qa1RoNDC3I4iEr3D34LXVqH33fClIFcQEJ3urIZ0bHGbwfDy
# wnBep9ttTTdYmU15QNA0XVolrmfrG05GBrCMKR+jEI+lM58j1fi1Rn3g7mOYkEs+
# BagvsBizWaSvQVOOCAUQLSrJOgZMHC6pMVFWZKyazKyXmCmKl5CH6p22MIIEujCC
# A6KgAwIBAgIKYQUTNgAAAAAAGjANBgkqhkiG9w0BAQUFADB3MQswCQYDVQQGEwJV
# UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UE
# ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEwHwYDVQQDExhNaWNyb3NvZnQgVGlt
# ZS1TdGFtcCBQQ0EwHhcNMTEwNzI1MjA0MjE3WhcNMTIxMDI1MjA0MjE3WjCBszEL
# MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
# bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjENMAsGA1UECxMETU9Q
# UjEnMCUGA1UECxMebkNpcGhlciBEU0UgRVNOOjE1OUMtQTNGNy0yNTcwMSUwIwYD
# VQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNlMIIBIjANBgkqhkiG9w0B
# AQEFAAOCAQ8AMIIBCgKCAQEAnDSYGckJKWOZAhZ1qIhXfaG7qUES/GSRpdYFeL93
# 3OzmrrhQTsDjGr3tt/34IIpxOapyknKfignlE++RQe1hJWtRre6oQ7VhQiyd8h2x
# 0vy39Xujc3YTsyuj25RhgFWhD23d2OwW/4V/lp6IfwAujnokumidj8bK9JB5euGb
# 7wZdfvguw2oVnDwUL+fVlMgiG1HLqVWGIbda80ESOZ/wValOqiUrY/uRcjwPfMCW
# ctzBo8EIyt7FybXACl+lnAuqcgpdCkB9LpjQq7KIj4aA6H3RvlVr4FgsyDY/+eYR
# w/BDBYV4AxflLKcpfNPilRcAbNvcrTwZOgLgfWLUzvYdPQIDAQABo4IBCTCCAQUw
# HQYDVR0OBBYEFPaDiyCHEe6Dy9vehaLSaIY3YXSQMB8GA1UdIwQYMBaAFCM0+NlS
# RnAK7UD7dvuzK7DDNbMPMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly9jcmwubWlj
# cm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY3Jvc29mdFRpbWVTdGFtcFBD
# QS5jcmwwWAYIKwYBBQUHAQEETDBKMEgGCCsGAQUFBzAChjxodHRwOi8vd3d3Lm1p
# Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY3Jvc29mdFRpbWVTdGFtcFBDQS5jcnQw
# EwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZIhvcNAQEFBQADggEBAGL0BQ1P5xtr
# gudSDN95jKhVgTOX06TKyf6vSNt72m96KE/H0LeJ2NGmmcyRVgA7OOi3Mi/u+c9r
# 2Zje1gL1QlhSa47aQNwWoLPUvyYVy0hCzNP9tPrkRIlmD0IOXvcEnyNIW7SJQcTa
# bPg29D/CHhXfmEwAxLLs3l8BAUOcuELWIsiTmp7JpRhn/EeEHpFdm/J297GOch2A
# djw2EUbKfjpI86/jSfYXM427AGOCnFejVqfDbpCjPpW3/GTRXRjCCwFQY6f889GA
# noTjMjTdV5VAo21+2usuWgi0EAZeMskJ6TKCcRan+savZpiJ+dmetV8QI6N3gPJN
# 1igAclCFvOUwggW8MIIDpKADAgECAgphMyYaAAAAAAAxMA0GCSqGSIb3DQEBBQUA
# MF8xEzARBgoJkiaJk/IsZAEZFgNjb20xGTAXBgoJkiaJk/IsZAEZFgltaWNyb3Nv
# ZnQxLTArBgNVBAMTJE1pY3Jvc29mdCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
# eTAeFw0xMDA4MzEyMjE5MzJaFw0yMDA4MzEyMjI5MzJaMHkxCzAJBgNVBAYTAlVT
# MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK
# ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBDb2Rl
# IFNpZ25pbmcgUENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsnJZ
# XBkwZL8dmmAgIEKZdlNsPhvWb8zL8epr/pcWEODfOnSDGrcvoDLs/97CQk4j1XIA
# 2zVXConKriBJ9PBorE1LjaW9eUtxm0cH2v0l3511iM+qc0R/14Hb873yNqTJXEXc
# r6094CholxqnpXJzVvEXlOT9NZRyoNZ2Xx53RYOFOBbQc1sFumdSjaWyaS/aGQv+
# knQp4nYvVN0UMFn40o1i/cvJX0YxULknE+RAMM9yKRAoIsc3Tj2gMj2QzaE4BoVc
# TlaCKCoFMrdL109j59ItYvFFPeesCAD2RqGe0VuMJlPoeqpK8kbPNzw4nrR3XKUX
# no3LEY9WPMGsCV8D0wIDAQABo4IBXjCCAVowDwYDVR0TAQH/BAUwAwEB/zAdBgNV
# HQ4EFgQUyxHoytK0FlgByTcuMxYWuUyaCh8wCwYDVR0PBAQDAgGGMBIGCSsGAQQB
# gjcVAQQFAgMBAAEwIwYJKwYBBAGCNxUCBBYEFP3RMU7TJoqV4ZhgO6gxb6Y8vNgt
# MBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMB8GA1UdIwQYMBaAFA6sgmBAVieX
# 5SUT/CrhClOVWeSkMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwubWljcm9z
# b2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL21pY3Jvc29mdHJvb3RjZXJ0LmNybDBU
# BggrBgEFBQcBAQRIMEYwRAYIKwYBBQUHMAKGOGh0dHA6Ly93d3cubWljcm9zb2Z0
# LmNvbS9wa2kvY2VydHMvTWljcm9zb2Z0Um9vdENlcnQuY3J0MA0GCSqGSIb3DQEB
# BQUAA4ICAQBZOT5/Jkav629AsTK1ausOL26oSffrX3XtTDst10OtC/7L6S0xoyPM
# fFCYgCFdrD0vTLqiqFac43C7uLT4ebVJcvc+6kF/yuEMF2nLpZwgLfoLUMRWzS3j
# StK8cOeoDaIDpVbguIpLV/KVQpzx8+/u44YfNDy4VprwUyOFKqSCHJPilAcd8uJO
# +IyhyugTpZFOyBvSj3KVKnFtmxr4HPBT1mfMIv9cHc2ijL0nsnljVkSiUc356aNY
# Vt2bAkVEL1/02q7UgjJu/KSVE+Traeepoiy+yCsQDmWOmdv1ovoSJgllOJTxeh9K
# u9HhVujQeJYYXMk1Fl/dkx1Jji2+rTREHO4QFRoAXd01WyHOmMcJ7oUOjE9tDhNO
# PXwpSJxy0fNsysHscKNXkld9lI2gG0gDWvfPo2cKdKU27S0vF8jmcjcS9G+xPGeC
# +VKyjTMWZR4Oit0Q3mT0b85G1NMX6XnEBLTT+yzfH4qerAr7EydAreT54al/RrsH
# YEdlYEBOsELsTu2zdnnYCjQJbRyAMR/iDlTd5aH75UcQrWSY/1AWLny/BSF64pVB
# J2nDk4+VyY3YmyGuDVyc8KKuhmiDDGotu3ZrAB2WrfIWe/YWgyS5iM9qqEcxL5rc
# 43E91wB+YkfRzojJuBj6DnKNwaM9rwJAav9pm5biEKgQtDdQCNbDPTCCBgcwggPv
# oAMCAQICCmEWaDQAAAAAABwwDQYJKoZIhvcNAQEFBQAwXzETMBEGCgmSJomT8ixk
# ARkWA2NvbTEZMBcGCgmSJomT8ixkARkWCW1pY3Jvc29mdDEtMCsGA1UEAxMkTWlj
# cm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTA3MDQwMzEyNTMw
# OVoXDTIxMDQwMzEzMDMwOVowdzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
# bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
# b3JhdGlvbjEhMB8GA1UEAxMYTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBMIIBIjAN
# BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn6Fssd/bSJIqfGsuGeG94uPFmVEj
# UK3O3RhOJA/u0afRTK10MCAR6wfVVJUVSZQbQpKumFwwJtoAa+h7veyJBw/3DgSY
# 8InMH8szJIed8vRnHCz8e+eIHernTqOhwSNTyo36Rc8J0F6v0LBCBKL5pmyTZ9co
# 3EZTsIbQ5ShGLieshk9VUgzkAyz7apCQMG6H81kwnfp+1pez6CGXfvjSE/MIt1Nt
# UrRFkJ9IAEpHZhEnKWaol+TTBoFKovmEpxFHFAmCn4TtVXj+AZodUAiFABAwRu23
# 3iNGu8QtVJ+vHnhBMXfMm987g5OhYQK1HQ2x/PebsgHOIktU//kFw8IgCwIDAQAB
# o4IBqzCCAacwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUIzT42VJGcArtQPt2
# +7MrsMM1sw8wCwYDVR0PBAQDAgGGMBAGCSsGAQQBgjcVAQQDAgEAMIGYBgNVHSME
# gZAwgY2AFA6sgmBAVieX5SUT/CrhClOVWeSkoWOkYTBfMRMwEQYKCZImiZPyLGQB
# GRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0MS0wKwYDVQQDEyRNaWNy
# b3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCEHmtFqFKoKWtTHNY9AcT
# LmUwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3Br
# aS9jcmwvcHJvZHVjdHMvbWljcm9zb2Z0cm9vdGNlcnQuY3JsMFQGCCsGAQUFBwEB
# BEgwRjBEBggrBgEFBQcwAoY4aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9j
# ZXJ0cy9NaWNyb3NvZnRSb290Q2VydC5jcnQwEwYDVR0lBAwwCgYIKwYBBQUHAwgw
# DQYJKoZIhvcNAQEFBQADggIBABCXisNcA0Q23em0rXfbznlRTQGxLnRxW20ME6vO
# vnuPuC7UEqKMbWK4VwLLTiATUJndekDiV7uvWJoc4R0Bhqy7ePKL0Ow7Ae7ivo8K
# BciNSOLwUxXdT6uS5OeNatWAweaU8gYvhQPpkSokInD79vzkeJkuDfcH4nC8GE6d
# jmsKcpW4oTmcZy3FUQ7qYlw/FpiLID/iBxoy+cwxSnYxPStyC8jqcD3/hQoT38IK
# YY7w17gX606Lf8U1K16jv+u8fQtCe9RTciHuMMq7eGVcWwEXChQO0toUmPU8uWZY
# sy0v5/mFhsxRVuidcJRsrDlM1PZ5v6oYemIp76KbKTQGdxpiyT0ebR+C8AvHLLvP
# Q7Pl+ex9teOkqHQ1uE7FcSMSJnYLPFKMcVpGQxS8s7OwTWfIn0L/gHkhgJ4VMGbo
# QhJeGsieIiHQQ+kr6bv0SMws1NgygEwmKkgkX1rqVu+m3pmdyjpvvYEndAYR7nYh
# v5uCwSdUtrFqPYmhdmG0bqETpr+qR/ASb/2KMmyy/t9RyIwjyWa9nR2HEmQCPS2v
# WY+45CHltbDKY7R4VAXUQS5QrJSwpXirs6CWdRrZkocTdSIvMqgIbqBbjCW/oO+E
# yiHW6x5PyZruSeD3AWVviQt9yGnI5m7qp5fOMSn/DsVbXNhNG6HY+i+ePy5VFmvJ
# E6P9MYIEgTCCBH0CAQEwgYcweTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
# bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
# b3JhdGlvbjEjMCEGA1UEAxMaTWljcm9zb2Z0IENvZGUgU2lnbmluZyBQQ0ECCmEZ
# zJMAAQAAAGYwCQYFKw4DAhoFAKCBrjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIB
# BDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQU
# 37K+vJ1jnPxK8vpkRCAPo9DnSWcwTgYKKwYBBAGCNwIBDDFAMD6gJIAiAE0AaQBj
# AHIAbwBzAG8AZgB0ACAAQQBTAFAALgBOAEUAVKEWgBRodHRwOi8vd3d3LmFzcC5u
# ZXQvIDANBgkqhkiG9w0BAQEFAASCAQAch73cCOyClYPbCbF4q17gXzOFADhQ2A8/
# +brHMZd9c5vDdUB7LXjLdNOYtsXXSR5sqjfFmotLgY+w5nQd85/pHjR+/F+cAo/R
# aralmkgTPQpfN/qdo4tH/zCzgB+ytdVVBkcwm3tMTwCws7yj5daMsOOx3fawGo20
# sr/3C3lZpp/vB6tqX4sFPVNxYD48Rhx3VEgu0pfbwqbJJaVw2aJPwN1S+LSh6hpa
# HxCgm6tzuMY42k/vGZKtvuXOpalK86S8VnJKwEyXtfMZUuybZUAgVRp1zg2/+cjO
# b9u1WCQ+eMw04zsy1OTpNHjzfGDe0qJPgjz3OOWbeTEEhBQqCb21oYICHTCCAhkG
# CSqGSIb3DQEJBjGCAgowggIGAgEBMIGFMHcxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
# EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3Nv
# ZnQgQ29ycG9yYXRpb24xITAfBgNVBAMTGE1pY3Jvc29mdCBUaW1lLVN0YW1wIFBD
# QQIKYQUTNgAAAAAAGjAHBgUrDgMCGqBdMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0B
# BwEwHAYJKoZIhvcNAQkFMQ8XDTEyMDUyMjE5NDE1M1owIwYJKoZIhvcNAQkEMRYE
# FJdEhK3IY0sOuO94jDHTXmesWLHdMA0GCSqGSIb3DQEBBQUABIIBAA1fOCfslUgv
# l9f/HtpuO02C0hSKnBkSGbD2rh9lFY4hL4rpwQksPDLtRcuZzcPtwq48YXbDMg+I
# Xe2SI6nUGkuk2PScgvYlLQ2PdODyLfI591wMwGfcBxmoU3kXyqyMLccIUBAi8lQV
# Bb8q5JZc6+YDrb1pDB7LZzIPQ29JZfUi/0jnIel/FPEE9hRirsztkaI8BD5YFTlt
# JtG4xdcR2qzOvPkhBqnnU19oJZ7359KSUstW3N2ndvOXtBBn/yoxcivbXOZE3190
# PHsxuwpbiDIzsrASHJLWtD7ctufmuT+7hrr+6JL39iQB36E9s7ufmZVSIdvJzZkQ
# gWbUsIzSSbA=
# SIG # End signature block

BIN
packages/Microsoft.AspNet.Razor.2.0.30506.0/Microsoft.AspNet.Razor.2.0.30506.0.nupkg View File


BIN
packages/Microsoft.AspNet.Razor.2.0.30506.0/lib/net40/System.Web.Razor.dll View File


+ 4359
- 0
packages/Microsoft.AspNet.Razor.2.0.30506.0/lib/net40/System.Web.Razor.xml
File diff suppressed because it is too large
View File


BIN
packages/Microsoft.AspNet.Razor.2.0.30506.0/lib/net40/zh-Hans/System.Web.Razor.resources.dll View File


+ 4359
- 0
packages/Microsoft.AspNet.Razor.2.0.30506.0/lib/net40/zh-Hans/system.web.razor.xml
File diff suppressed because it is too large
View File


BIN
packages/Microsoft.AspNet.Razor.zh-Hans.2.0.30506.0/Microsoft.AspNet.Razor.zh-Hans.2.0.30506.0.nupkg View File


BIN
packages/Microsoft.AspNet.Razor.zh-Hans.2.0.30506.0/lib/net40/zh-Hans/System.Web.Razor.resources.dll View File


+ 4359
- 0
packages/Microsoft.AspNet.Razor.zh-Hans.2.0.30506.0/lib/net40/zh-Hans/system.web.razor.xml
File diff suppressed because it is too large
View File


BIN
packages/Microsoft.AspNet.Web.Optimization.1.0.0/Microsoft.AspNet.Web.Optimization.1.0.0.nupkg View File


BIN
packages/Microsoft.AspNet.Web.Optimization.1.0.0/lib/net40/System.Web.Optimization.dll View File


BIN
packages/Microsoft.AspNet.Web.Optimization.1.0.0/lib/net40/zh-Hans/System.Web.Optimization.resources.dll View File


BIN
packages/Microsoft.AspNet.Web.Optimization.zh-Hans.1.0.0/Microsoft.AspNet.Web.Optimization.zh-Hans.1.0.0.nupkg View File


BIN
packages/Microsoft.AspNet.Web.Optimization.zh-Hans.1.0.0/lib/net40/zh-Hans/System.Web.Optimization.resources.dll View File


BIN
packages/Microsoft.AspNet.WebApi.4.0.30506.0/Microsoft.AspNet.WebApi.4.0.30506.0.nupkg View File


BIN
packages/Microsoft.AspNet.WebApi.Client.4.0.30506.0/Microsoft.AspNet.WebApi.Client.4.0.30506.0.nupkg View File


BIN
packages/Microsoft.AspNet.WebApi.Client.4.0.30506.0/lib/net40/System.Net.Http.Formatting.dll View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save