加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET MVC 4实体框架6 SQL Compact Edition 4.0部署无需安装

发布时间:2020-12-16 04:07:47 所属栏目:asp.Net 来源:网络整理
导读:我试图部署一个使用Entity Framework 6(Code First)和SQL Compact 4.0的基本MVC 4应用程序 在安装了iis的 Windows 7的干净安装上(未安装mvc 4和sql compact 4.0). 我在db项目上安装了以下nuget包: EntityFramework(版本6.0.0-alpha2) EntityFramework.SqlSe
我试图部署一个使用Entity Framework 6(Code First)和SQL Compact 4.0的基本MVC 4应用程序
在安装了iis的 Windows 7的干净安装上(未安装mvc 4和sql compact 4.0).

我在db项目上安装了以下nuget包:

> EntityFramework(版本6.0.0-alpha2)
> EntityFramework.SqlServerCompact(Version 6.0.0-alpha2)
> Microsoft.AspNet.Providers(版本1.2)
> Microsoft.AspNet.Providers.Core(版本1.2)
> Microsoft.SqlServer.Compact(版本4.0.8876.1)

在web.config中,我得到了以下配置:

<connectionStrings>
  <add name="[Name]" connectionString="Data Source=|DataDirectory|[FileName].sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>  

......................

<entityFramework>
  <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory,EntityFramework">
     <parameters>
        <parameter value="System.Data.SqlServerCe.4.0" />
     </parameters>
  </defaultConnectionFactory>
  <providers>
      <provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices,EntityFramework.SqlServerCompact,Version=6.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" />
  </providers>
</entityFramework>

Bin文件夹(sql ce文件位于amd64和x86文件夹中:

> [amd64]
> [x86]
> Antlr3.Runtime.dll
> DotNetOpenAuth.AspNet.dll
> DotNetOpenAuth.Core.dll
> DotNetOpenAuth.OAuth.Consumer.dll
> DotNetOpenAuth.OAuth.dll
> DotNetOpenAuth.OpenId.dll
> DotNetOpenAuth.OpenId.RelyingParty.dll
> EntityFramework.dll
> EntityFramework.SqlServer.dll
> EntityFramework.SqlServer.xml
> EntityFramework.SqlServerCompact.dll
> EntityFramework.SqlServerCompact.xml
> EntityFramework.xml
> Microsoft.Web.Infrastructure.dll
> Microsoft.Web.WebPages.OAuth.dll
> Newtonsoft.Json.dll
> ShipMedProto.DB.dll
> ShipMedProto.DB.pdb
> ShipMedProto.Web.dll
> ShipMedProto.Web.pdb
> System.ComponentModel.DataAnnotations.dll
> System.Data.DataSetExtensions.dll
> System.Data.SqlServerCe.dll
> System.Data.SqlServerCe.Entity.dll
> System.Net.Http.Formatting.dll
> System.Web.Helpers.dll
> System.Web.Http.dll
> System.Web.Http.WebHost.dll
> System.Web.Mvc.dll
> System.Web.Optimization.dll
> System.Web.Providers.dll
> System.Web.Razor.dll
> System.Web.WebPages.Deployment.dll
> System.Web.WebPages.dll
> System.Web.WebPages.Razor.dll
> WebActivatorEx.dll
> WebGrease.dll
> WebMatrix.Data.dll
> WebMatrix.WebData.dll

当我部署到干净的机器时,我收到以下错误消息:

无法找到请求的.Net Framework数据提供程序.它可能没有安装.

在我的开发机器上它工作正常. (我安装了sql ce)

我有什么问题吗?

解决方法

我认为您真正想要做的是管理NuGet包,以便为EntityFramework添加SqlServerCompact支持.只需右键单击您的引用和Manager NuGet包.然后在对话框中搜索SqlServerCompact.你应该看到这个:

添加它应该添加上面答案中的等效字符串.我最终在web.config(或app.config,如果你正在做一个应用程序)中这样做了

<entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory,EntityFramework">
          <parameters>
            <parameter value="System.Data.SqlServerCe.4.0" />
          </parameters>
        </defaultConnectionFactory>
        <providers>
          <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices,EntityFramework.SqlServer" />
          <provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices,EntityFramework.SqlServerCompact" />
        </providers>   
</entityFramework>   
<system.data>
        <DbProviderFactories>
          <remove invariant="System.Data.SqlServerCe.4.0" />
          <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory,System.Data.SqlServerCe,Version=4.0.0.0,PublicKeyToken=89845dcd8080cc91" />
        </DbProviderFactories>   
</system.data>

对不起,我迟到了一年,但希望这有助于其他人.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读