带有Service Fabric的Microsoft.SqlServer.Types

时间:2017-07-26 09:51:13

标签: asp.net .net sql-server entity-framework

问题很简单。我将WebApps项目移动到安装了Microsoft.SqlServer.Types nuget包的Service Fabric。现在,当尝试访问数据库时,我收到以下错误,因为我正在使用空间类型。

  

“此提供程序无法使用空间类型和函数,因为无法找到程序集”Microsoft.SqlServer.Types“版本10或更高版本。”

我尝试将以下代码行添加到FabricRuntime创建实例的类中,但这没用。

jQuery("#detailsSpace").empty(); // Before while

while ([...]){
   [...]
   jQuery("#detailSpace").append(thisCompanyMarkupBlock); // Instead of html()
}

如果您需要我提供更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:1)

您确实需要代码行,但对于asp.net应用程序,它应该略有不同: 对于Asp.net网站,Default.aspx.cs:

public partial class _Default : System.Web.UI.Page
{
    static bool _isSqlTypesLoaded = false;

    public _Default()
    {
        if (!_isSqlTypesLoaded)
        {
            SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~"));
            _isSqlTypesLoaded = true;
        }

    }
}

对于Web应用程序,在Global.asax.cs中:

SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));

您还需要在web.config中创建以下绑定重定向:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-14.0.0.0" newVersion="14.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

Here是关于该主题的唯一讨论,它帮助了我。

更新: Here是一篇博文,通过3个步骤提供了详细描述的解决方案。虽然,第三步对我不起作用,我必须如上所述创建绑定。