2010-07-28 10 views
5

için datetime2'yi içeren bir sorgu üretir. Varlıklar uygulamasına bir LINQ var ve bir VS 2010 çözümünün .NET 4.0'daki şemasını yönetmek için bir veritabanı projesi var. Varlık modeli şu anda veritabanından tersine mühendislik uygulanmaktadır. Tablolardan biri, datetime türünde bir sütun ile tanımlanır. Veritabanı projesi, SQL Server 2005 uyumluluk modunu kullanacak şekilde yapılandırılmıştır ve tüm bunlar Tamam'ı dağıtır.Varlıklar LINQ, SQL 2005 Express

Ben ettik SQL 2005 veri türünü desteklemediği için sadece bir istisna neden varlık çerçeve üzerinden bir güncelleme bildirimi yerine datetime daha datetime2 kullandığı görülüyor bir sorun haline çalıştırın:

System.Data.UpdateException: An error occurred while updating the entries. 
See the inner exception for details. ---> System.ArgumentException: The version 
of SQL Server in use does not support datatype 'datetime2'. 
hiçbir referanslar dbschema dosyası dahil (datetime2 için var olduğunu benim SQL kodu ve varlık tüm kodu baktım ve teyit ettik

System.Data.Mapping.Update.DynamicUpdateCommand 

: edilir yığın izleme itibaren

hata içinde meydana gelen gibi görünüyor anlaşılıyor). Sadece veri türünün, varlık çerçevesi tarafından oluşturulan dinamik SQL sorgusunda üretildiğini söyleyebilirim.

Bunu nasıl onaylayabilir veya reddedebilirim ve nasıl olmasını engelleyebilirim? Varlık çerçevesi, db projesinin 2005 uyumluluk modunu hedeflemesini istediğimi bilmez ve baktığım sürüme işaret etmenin bir yolunu göremiyorum. Değeri için bu projeyi 2008 Express'in yüklü olduğu bir makinede oluşturdum, ancak periyodik olarak (henüz henüz yükseltilemeyen) bir başka makineye geçiyorum.

+2

LINQ to SQL ile bu sorunu yaşayan herkes için SQL Server'daki Tablo Alanlarınızın veri türlerini "smalldatetime" olarak değiştirebilirsiniz. Ardından, tablolarınızı DBML'nize yeniden sürükleyin, yeniden derleyin, yeniden konuşlandırın ve ayarlanmanız gerekir. SQL –

cevap

13

EDMX'inizin içindeki ProviderManifestToken değerini 2005 değerine değiştirmeniz gerekir. Muhtemelen DB'nizi bir 2008 DB'sine karşı oluşturdunuz. Bu değişikliği yapın ve EF 2008 sözdizimini kullanarak duracaktır.

+0

için LINQ için ProvidermanifestToken eşdeğerini mükemmel bulunamadı! Teşekkür ederim! –

+0

Çok yararlı, çok teşekkürler. – Fanda