Saya mencoba membuat webapi di ASP.NET MVC 4. Webapi menggunakan Entity Framework 5 Spatial type dan saya telah menulis kode yang sangat sederhana.
public List<Area> GetAllAreas()
{
List<Area> aList = db.Areas.ToList();
return aList;
}
Area berisi DbGeometry.
Ketika saya menjalankan lokal ini berfungsi, tetapi ketika saya mempublikasikannya ke biru itu memberi saya kesalahan ini:
Jenis spasial dan fungsi tidak tersedia untuk penyedia ini karena rakitan 'Microsoft.SqlServer.Types' versi 10 atau lebih tinggi tidak dapat ditemukan.
Adakah yang tahu bagaimana menyelesaikan ini? :)
Terima kasih!
asp.net-mvc
entity-framework
azure
Thomas Bolander
sumber
sumber
Jawaban:
Saya menemukan solusinya! Instal saja paket nuget Microsoft.SqlServer.Types
Tautan untuk info lebih lanjut
sumber
The jawaban atas karya-baik saja ketika versi 11 (SQL Server 2012) perakitan dapat digunakan.
Saya mengalami masalah dengan ini karena solusi saya memiliki ketergantungan lain pada versi 13 (SQL Server 2016) dari rakitan yang sama. Dalam kasus ini, perhatikan bahwa Entity Framework (setidaknya v6.1.3) di-hardcode di SqlTypesAssemblyLoader (sumber pengecualian ini) untuk hanya mencari versi 10 dan 11 dari rakitan.
Untuk mengatasi ini, saya menemukan Anda dapat memberi tahu Entity Framework perakitan mana yang ingin Anda gunakan seperti ini:
sumber
EntityContext
kelas khusus saya (yang mewarisiDbContext
).SqlProviderServices.SqlServerTypesAssemblyName = typeof(SqlGeography).Assembly.FullName;
Untuk beberapa alasan saya kehilangan pengalihan yang mengikat yang memperbaiki masalah ini untuk saya.
Menambahkan yang berikut ini memperbaiki masalah saya
sumber
AppDomain currentDomain = AppDomain.CurrentDomain; Assembly[] assems = currentDomain.GetAssemblies(); foreach (Assembly assembly in assems) { _logger.Info(assembly.GetName().FullName); }
mana _logger adalah Nlog loggerAda 2 cara untuk memperbaikinya:
Cara kedua adalah dengan menggunakan pengelola paket NuGet dan menginstal
Instal-Paket Microsoft.SqlServer.Types
Kemudian ikuti catatan plugin seperti di bawah ini
sumber
~/
alih - alih~/bin
. Pastikan untuk memeriksa jalur Anda juga.Saya juga mengalami masalah ini, tetapi paket nuget Microsoft.SqlServer.Types sudah diinstal.
Apa yang memecahkan masalah bagi saya adalah pergi ke Solution> References> System.Data.Entity> Properties> Copy Local, dan mengaturnya ke True.
Catatan: Salin Lokal untuk Microsoft.SqlServer.Types sudah disetel ke true, dan meskipun masalahnya ada di System.Data.Entity, pesan kesalahannya masih tentang Microsoft.SqlServer.Types.
Solusinya adalah dari forum Windows Azure .
sumber
Silakan tambahkan "dependentAssembly" ke file Web.config
Ini berhasil untuk saya
sumber
Solusi bagi saya hanya menambahkan baris kode ini ke Global.asax.cs di
Application_Start()
:Semoga beruntung saudara-saudaraku.
sumber
Mengikuti komentar dalam jawaban untuk posting saat ini, menambahkan dua baris ini (lebih disukai ke fungsi utama) memecahkan masalah saya untuk Aplikasi Konsol:
sumber
Dalam kasus saya (a App WebForms) Aku memecahkan masalah menambahkan baris berikut dalam
Application_Start
satuGlobal.asax
berkas.Saya harap ini membantu seseorang.
sumber
Tidak ada solusi di atas yang berhasil bagi saya.
Tahukah Anda, kesalahan ini juga bisa disebabkan oleh sumber daya yang rendah di server . Saya memulai ulang SQL server dan diselesaikan secara otomatis.
sumber
Baru saja mengalami masalah yang sama. Saya menggunakan
EF6
dan memanggilSQL
yang memiliki fungsi SQL yang menggunakan perintah spasial. Saya menguji ini melalui unit test dan bekerja dengan baik. Ketika saya pergi untuk memasangAsp.Net
solusi saya, saya menerima kesalahanDengan menambahkan
NUGET
paket "Microsoft.SqlServer.Types" dan menambahkanSqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));
diApplication_Start method
dalamGlobal.asax.cs
semuanya bekerja dengan baik.sumber
Dalam kasus saya, string koneksi yang disusun dengan buruk menyebabkan hal ini. Verifikasi apakah string koneksi Anda disusun dengan benar.
sumber