私は問題があります。 ASP.NET WebAPI 2プロジェクトに移行を追加できません。エラーが発生します:
「アセンブリ 'Microsoft.SqlServer.Types'バージョン10以降が見つからなかったため、このプロバイダーでは空間型と空間関数を使用できません。」
私はこれについていくつかの質問と回答があることを知っています:
しかし!問題は...
これは、たとえばAdd-Migration v002を実行しようとしたときの完全なエラーです。
System.InvalidOperationException:アセンブリ 'Microsoft.SqlServer.Types'バージョン10以降が見つからなかったため、このプロバイダーでは空間型と空間関数を使用できません。
en System.Data.Entity.SqlServer.SqlTypesAssemblyLoader.GetSqlTypesAssembly()en System.Data.Entity.SqlServer.SqlSpatialServices.GeographyFromText(String wellKnownText)en System.Data.Entity.Spatial.DbGeography.FromText(String wellKnownText )ja System.Data.Entity.Migrations.Model.ColumnModel.CreateDefaultValue()
en System.Data.Entity.Migrations.Model.ColumnModel..ctor(PrimitiveTypeKind type、TypeUsage typeUsage)en System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.BuildColumnModel(EdmProperty property、TypeUsage conceptTypeUsage、TypeUsage defaultStoreTypeUsage 、IDictionary2 annotations) en System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.BuildColumnModel(EdmProperty property, ModelMetadata modelMetadata, IDictionary
2アノテーション)
en System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer。<> c__DisplayClass2e3.b__2df(EdmProperty p)ja System.Data.Entity.Utilities.IEnumerableExtensions.Each [T](IEnumerable _1 ts, Action
_ 1アクション) ja System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.BuildCreateTableOperation(EntitySet entitySet、ModelMetadata modelMetadata)ja System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.b__194(EntitySet es)en System.Linq.Enumerable.WhereSelectEnumerableIterator _2.MoveNext()
_1..ctor(IEnumerable _
en System.Collections.Generic.List1 collection)
_ 1 source)ja System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(ModelMetadata source、ModelMetadata target、Lazy
en System.Linq.Enumerable.ToList[TSource](IEnumerable1 modificationCommandTreeGenerator, MigrationSqlGenerator migrationSqlGenerator, String sourceModelVersion, String targetModelVersion) en System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(XDocument sourceModel, XDocument targetModel, Lazy
1 modificationCommandTreeGenerator、MigrationSqlGenerator migrationSqlGenerator、String sourceModelVersion、String targetModelVersion )ja System.Data.Entity.Migrations.DbMigrator.Scaffold(String migrationName、String namespace、Boolean ignoreChanges)ja System.Data.Entity.Migrations.Design.MigrationScaffolder.Scaffold(Stri ng migrationName、Boolean ignoreChanges)ja System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Scaffold(MigrationScaffolder scaffolder)ja System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Run()ja System.AppDomain.DoCallBack (CrossAppDomainDelegate callBackDelegate)ja System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
en System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)en System.Data.Entity.Migrations.Design.ToolingFacade.Scaffold(String migrationName、String language、String rootNamespace、Boolean ignoreChanges) System.Data.Entity.Migrations.AddMigrationCommand.Execute(String name、Boolean force、Boolean ignoreChanges)ja System.Data.Entity.Migrations.AddMigrationCommand。<> c__DisplayClass2。<。ctor> b__0()ja System.Data.Entity .Migrations.MigrationsDomainCommand.Execute(アクションコマンド)
多くの調査の後、「SQL Server 2012のMicrosoftシステムCLRタイプ」をインストールしました。
魅力のように働いた!
バインディングリダイレクトが欠落していないことを確認してください
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="10.0.0.0-11.0.0.0" newVersion="14.0.0.0" />
</dependentAssembly>
これは私のために働いた。
これをweb.config> system.webServer >> runtime >> assemblyBindingノードに追加します
<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>
問題は「仮想」である可能性があります。 add-migrationコマンドを発行する時点で、binフォルダーにSqlServerSpatial140.dllが必要です。開発目的で.dllをbinにコピーし、デプロイメント中にバージョン(x86/x64)を手動で置き換えます。 SQL Server(2012+)には既にアセンブリがインストールされています。