2011-09-14 13 views
5

değerini istiyorum. (DbContext) db (SQL Server 2008 R2) modelleme oluşturduğum sınıfları oluşturdum ve tablolarımın çoğunda standart ModifiedDate ve CreatedDate (Boş Değer Yok). Bunların her birinin SQLServer'da getdate() değeri vardır ve herhangi bir güncellemede ModifiedDate'i güncellemem için bir tetikleyici var.MVC 3 tarihi oluşturuldu ve değiştirildi, SQL Server 2008 R2'de varsayılan değerler ve tetikleyiciler var, ancak yine de

Oluşturulan görünümler, istemediğim ModifiedDate ve CreatedDate alanlarını içeriyordu (kullanıcının bunları görmemesi gerekiyordu), bu yüzden bunları çıkardım, ancak oluşturulan Create görünümünü kullanarak yeni bir giriş eklerken, "Bir datetime2 veri türünün bir aralık dışı veri türüne dönüştürülmesiyle aralık dışı bir değer elde edildi" hatasını alıyorum.

Bazı varsayılan değerler ekledim ve kaydı ekledim, ancak doğal olarak girilen değerlerimi ekledim ve tercih ettiğim SQL getdate() değerlerini değil (sunucu saatini göstermek istiyorum) . Nesnenin kontrol edilmesi (db.SaveChanges()) alanların değeri {1/01/0001 12:00:00}.

Bu modelleri tarihleri ​​girmeden nasıl kullanabilirim ??? modelde mevcut değildir Linq To-SQL

: Ben

cevap

4

Bu SQL Entity Framework ve Linq hem de sık görülen bir sorundur ;-(... aradık ama benim yanıt bulamadıysanız varsayılan değerler hakkında bilgi edinin ve bu nedenle "null" olarak atamaya çalışın - bu durumda kabul edilemez. Bunu düzeltmek için, DBML dosyasını açın ve "Otomatik Üretilen Değer" seçeneğini alanları "doğru" olarak ayarlayın. . soru Varlık Çerçevesinde

biraz farklıdır.

: Eğer alana ya "Kimlik" veya "Bilgisayarlı" açık "StoreGeneratedPattern" set İşte açıklamasını http://msdn.microsoft.com/en-us/library/system.data.metadata.edm.storegeneratedpattern.aspx

EF, Kimlik türü alanları için bunu otomatik olarak yapacak, ancak varsayılan değer/boş olmayan alanlar için yapamaz. CreatedDate öğenizi "Identity" (yalnızca insertte güncellenir) ve ModifiedDate'iniz "Computed" (ekleme ve güncelleme hakkında güncellendi) olarak ayarlamak isteyebilirsiniz.

Bunun bir yan ürünü, alanları Linq aracılığıyla ayarlayamayacağınızdır - ama kullanım durumunuzda sorun değil, bence.

+0

Bunun için teşekkürler. Yayınınızdan kısa bir süre önce bu çözümün olacağını gördük, ancak Entity Framework'de bir hata oluştuğundan, bu ayarların zaten alınmadığı anlamına geliyor. VS2010 SP1 bu hatayı düzeltir ve SP1'i çalıştırmıyorduk. Şimdi her şey iyi, yardımlarınız için teşekkürler! – Daryl