Saya telah membangun model kerangka entitas terhadap database 2008. Semua bekerja dengan baik terhadap database 2008. Ketika saya mencoba untuk memperbarui entitas pada database 2005 saya mendapatkan kesalahan ini.
Versi SQL Server yang digunakan tidak mendukung datatype 'datetime2
Saya secara khusus tidak menggunakan fitur 2008 apa pun saat membuat database. Saya tidak dapat menemukan referensi apa pun ke datetime2 dalam kode. Dan, ya, kolom tersebut didefinisikan sebagai "datetime" dalam database.
sumber
Tampilan cepat dari garis:
sumber
Ini sangat membuat frustrasi dan saya terkejut MS memutuskan untuk tidak membuatnya sehingga Anda dapat menargetkan versi SQL tertentu. Untuk memastikan kami menargetkan 2005, saya menulis aplikasi konsol sederhana dan menyebutnya dalam langkah PreBuild.
Langkah prebuild terlihat seperti ini:
Kode di sini:
sumber
Menggunakan aplikasi konsol praktis @ Vance di atas, saya menggunakan yang berikut ini sebagai acara BeforeBuild
Ini sangat berguna, karena menghindari penerapan ulang yang mengganggu. Terima kasih telah membagikan Vance.
Saya telah menambahkan TF.exe ke folder solusi Perpustakaan dan ini membantu, karena sekarang saya dapat memeriksa file edmx sebelum mencoba mengeditnya, sebagai bagian dari build. Juga saya telah menambahkan ini dengan kondisi, sehingga set ke 2005 untuk penyebaran ke server dan kembali ke 2008 untuk konfigurasi sln mesin Dev. Juga untuk menyebutkan Anda perlu menambahkan file SetEdmxSqlVersion.exe (dan .pdb) sebenarnya ke folder Library (atau di mana pun Anda ingin menyimpan bit ini).
Terima kasih banyak @Vance. Benar-benar rapi, penghemat waktu masif dan membuat bangunan saya benar-benar otomatis dan bebas rasa sakit :)
sumber
Memiliki masalah serupa dengan 2012 vs. 2008. Ini dapat diselesaikan dengan acara BeforeBuild menggunakan XmlPeek dan XmlPoke:
Jika Anda tidak menyukai penggantian otomatis, Anda cukup mengganti tugas XmlPoke dengan tugas Error.
sumber
CallTarget
tugas target pra-build bersyarat, bergantung pada konfigurasi publikasi / build. (EG hanya berubah saat menerapkan ke lingkunganUntuk kepentingan orang-orang yang mengalami masalah yang sama tetapi menggunakan Kode Pertama , lihat jawaban saya di sini tentang cara mengubah
ProviderManifestToken
di Kode Pertama. Ini melibatkan pembuatanDbModelBuilder
secara manual dan meneruskan sebuahDbProviderInfo
instance (dengan token yang sesuai) saat memanggil metode pembuat modelBuild
.sumber
Type System Version=SQL Server 2005
dalam string koneksi juga dapat berfungsiSolusi yang lebih baik bagi saya adalah daripada mengedit file EDMX secara manual, cukup buka edmx dalam mode desain dan dalam menu konteks "Perbarui Model dari Database ...". Anda harus menunjuk ke versi SQL yang benar tentu saja apa pun ini untuk Anda.
sumber
Kami mengalami kesalahan ini di SQL2005 v.3, di mana kami tidak memilikinya di SQL2005 v.4.
Menambahkan SQL2005 ke string koneksi memperbaiki masalah khusus kami.
Kami belum mengidentifikasi alasannya, dan tidak ingin mengubah kode untuk memberikan token seperti yang diselesaikan di atas (masalah terwujud selama penerapan).
sumber