Saya mencoba mereplikasi contoh yang ditemukan di MSDN. Saya menggunakan ASP.NET dan EF 4.1 (CTP?). Saya telah menggunakan NuGet untuk menginstal paket EntityFramework.
Saya mendapatkan kesalahan ini: The provider did not return a ProviderManifestToken string
... dan database tidak pernah dibuat.
Ini string koneksi saya:
<add name="HospitalContext"
connectionString=
"data source=.\SQLExpress;initial catalog=NewTestDB;integrated security=True;"
providerName="System.Data.SqlClient"/>
Ini kode saya:
var pat = new Patient { Name = "Shane123132524356436435234" };
db.Patients.Add(pat);
var labResult = new LabResult { Result = "bad", Patient = pat };
int recordAffected = db.SaveChanges();
Inilah konteks saya:
public class HospitalContext : DbContext
{
static HospitalContext()
{
Database.SetInitializer(new HostpitalContextInitializer());
}
public DbSet<Patient> Patients { get; set; }
public DbSet<LabResult> LabResults { get; set; }
}
public class HostpitalContextInitializer :
DropCreateDatabaseIfModelChanges<HospitalContext>
{
protected override void Seed(HospitalContext context)
{
context.Patients.Add(new Patient { Name = "Fred Peters" });
context.Patients.Add(new Patient { Name = "John Smith" });
context.Patients.Add(new Patient { Name = "Karen Fredricks" });
}
}
Ini adalah sistem SQL 2008 yang sepenuhnya ditambal, dengan VS 2010 SP1.
SqlServerCe.Entity.dll
Jawaban:
Saya mendapatkan kesalahan ini dan mencoba beberapa saran sebelumnya. Kemudian saya memeriksa Inner Exception dan menyadari bahwa saya mengalami kegagalan login SQL sederhana untuk pengguna. Hanya sesuatu yang lain untuk diperiksa.
sumber
Ini kadang-kadang dapat terjadi ketika Anda menempatkan string koneksi dalam app.config dari proyek yang salah di Visual Studio.
Misalnya, saya mendapat masalah ini di proyek EF 4.1 (versi rilis) + proyek Layanan Data WCF dan saya perhatikan bahwa saya tidak memiliki string koneksi yang ditentukan dalam Proyek Layanan Data, tempat string itu digunakan.
sumber
Saya mengalami kesalahan yang sama, dan sebenarnya itu gagal masuk untuk server yang ditentukan. Saya menghapus atribut "Keamanan Terpadu" dari string koneksi konfigurasi dan berhasil.
sumber
Saya memiliki masalah yang sama, dan saya menambahkan kode di bawah ini tepat setelah contoh konteks saya (onload by exemple)
sumber
Saya mengalami masalah serupa dengan aplikasi MvcMusicStore. Saya mengubah baris di Web.config dari "Instance = true" menjadi "Instance = false". Terkadang berfungsi tanpa tweak ini tetapi saya tidak tahu apa yang menyebabkan perbedaannya. Membaca http://msdn.microsoft.com/en-us/library/ms254504.aspx ini tidak terlalu membantu.
sumber
Dengan alasan izin tertentu, EF tidak dapat membuat koneksi database. Saya menghadapi masalah yang sama sepanjang hari. Akhirnya saya mencoba solusi berikut dan berhasil: a / Open IIS (Saya menggunakan IIS 7) b / Buka pengaturan lanjutan appool yang digunakan situs web (Ex: DefaultAppPool) c / Lihat grup Model Proses, ubah nilai Identitas ke "Sistem Lokal"
Semoga berhasil dengan Anda.
sumber
Saya baru saja mengalami masalah yang sama ...
solusi yang berhasil untuk saya adalah:
jalankan alat konfigurasi jaringan klien (ketik cliconfg di Run)
dan pastikan TCP / IP diaktifkan ..
sumber
Saya akhirnya berhasil memecahkannya - setelah sedikit kejar-kejaran karena mengira itu karena izin.
Wahyu: GUNAKAN SQL PROFILER
(Catatan: Saya baru-baru ini menurunkan versi dari EF6 ke EF5)
Menggunakan SQL Profiler, saya dengan cepat menemukan SQL terakhir yang dieksekusi sebelum kegagalan yang dilaporkan:
SELECT TOP (1) [Project1].[C1] AS [C1], [Project1].[MigrationId] AS [MigrationId], [Project1].[Model] AS [Model] FROM ( SELECT [Extent1].[MigrationId] AS [MigrationId], [Extent1].[Model] AS [Model], 1 AS [C1] FROM [dbo].[__MigrationHistory] AS [Extent1] ) AS [Project1] ORDER BY [Project1].[MigrationId] DESC
Lihat itu - ada hubungannya dengan migrasi. Ini mencari di
__MigrationHistory
tabel - yang saya bahkan tidak menyadarinya telah dibuat (saya sudah menghapus Migrasi di CSPROJ saya) dan membersihkannya.Jadi saya menarik baris untuk tabel itu dan melihat bahwa itu terkait dengan versi produk tertentu (v6).
Saya benar-benar menurunkan versi dari EF6 (yang awalnya tidak ingin saya instal) ke EF5 (yang lebih kompatibel dengan scaffolding) dan saat masalah dimulai.
Dugaan saya adalah bahwa
Model (<Binary data>)
kolom tersebut tidak kompatibel ke belakang - makaThe provider did not return a ProviderManifest instance
kesalahan karena tidak dapat memecahkan kode itu.Saya tidak akan rugi apa-apa dan hanya menghapus tabel ini sepenuhnya dan lari
Update-Database -Verbose
lalu kembali aktif dan berjalan.Jika Anda berada di lingkungan tingkat lanjut atau sudah berproduksi, menghapus tabel ini mungkin bukan solusinya, tetapi cara ini memungkinkan saya untuk segera kembali bekerja.
sumber
Add-Migration
danUpdate-Database -Verbose -Force
. inilah referensi perintah coding.abel.nu/2012/03/ef-migrations-command-referenceDalam menggunakan Visual Studio 11 Beta dengan EF4.1 dan ASP.NET MVC, saya hampir mencabut rambut sampai saya menemukannya
Untuk memperbaiki masalah saya, saya masuk ke Application_Start dan berubah
untuk
sumber
Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True");
telah ditambahkan keMain
mehod saya , sekarang berfungsi seperti jimat! Terima kasih banyak.Kutipan dari CodePlex ini, ini berhasil dengan saya (visual studio 2013 / MVC 5)
sumber
Satu hal lain yang perlu dipertimbangkan jika Anda menggunakan EF Code First adalah terkadang tidak secara otomatis membuat database cadangan ke kelas DbContext Anda. Solusinya adalah menambahkan string koneksi Anda sendiri - Anda dapat menggunakan string koneksi yang mungkin ada untuk menangani database pengguna / registrasi yang mendukung Penyedia Keanggotaan Sederhana, sebagai template. Terakhir, Anda perlu menambahkan konstruktor default untuk kelas DbContext yang Anda buat:
Di sini, nama string koneksi saat Anda memasukkan file web.config Anda digunakan untuk mengarahkan DbContext untuk membuat database. Sangat sering, saya harus membuat database secara manual (di SQL Server Management Studio) yang mendorongnya untuk berfungsi.
sumber
Saya memiliki banyak proyek dalam satu solusi dan menambahkan EF ke setiap proyek dalam waktu yang berbeda. Pada beberapa mesin itu berfungsi dan pada beberapa gagal dengan kesalahan yang disebutkan di atas. Butuh beberapa saat bagi saya untuk memperhatikan bahwa beberapa app.config proyek saya memiliki ini:
Ini tidak masalah jika Anda menggunakan LocalDb (seperti "sql express" baru), tetapi sepenuhnya salah jika Anda tidak menginstal server tertentu dan menggunakan SQL biasa.
Solusi: Hapus kode di atas.
sumber
Ini karena koneksi ke server SQL gagal.
Pastikan Akun Pengguna yang Anda gunakan untuk menjalankan proses memiliki akses ke SQL Server.
Jika Anda telah menghasilkan DbContext dari utas induk (seperti menggunakan Injeksi ketergantungan) dan kemudian jika Anda meniru pengguna lain maka kesalahan ini akan terjadi. Solusinya adalah membuat DbContext di dalam utas baru atau konteks Peniruan Identitas baru.
sumber
Saya baru saja menutup semua contoh Visual Studio dan membuka kembali solusi saya.
Saya tidak tahu apa yang sebenarnya terjadi, tetapi saya memiliki solusi yang sama yang dibuka dari dua ruang kerja lokal yang berbeda (satu dengan perubahan lokal saya, satu dengan kode sumber repositori yang tidak berubah). Saya bekerja dengan postgres DB, Entity Framework 6, Visual Studio 2013 dan ASP.NET MVC 5.
sumber
Saya mengalami kesalahan untuk kerangka entitas, tetapi tidak satu pun dari jawaban di atas yang akhirnya sesuai dengan solusi yang akhirnya berhasil.
Model Pertama Kode Kerangka Kerja Entity dan DataContext saya berada dalam proyek Terpisah dari Proyek Utama WebAPI saya. Proyek Kerangka Kerja Entitas saya di suatu tempat di garis pengkodean ditetapkan sebagai proyek permulaan dan oleh karena itu ketika saya menjalankan migrasi, saya mendapatkan "Penyedia tidak mengembalikan string ProviderManifestToken" ... masalah sambungan.
Ternyata karena ConnectionString ke DB terletak di file Web.config di proyek utama WebAPI, saat saya menjalankan migrasi, string koneksi tidak diambil. Dengan menyetel proyek WebAPI sebagai startProject saya, saya berhasil tersambung.
sumber