9

SQL Server 2008 ile kod ilk geçişleri olan bir Entity Framework 5.0 projemiz var, ancak tüm tarih özellikleri sütun olarak değil datetime2 veritabanında oluşturuldu.Enitity Framework/SQL Server 2008 projesinde datetime2'ye geçiş yapma

Veritabanındaki tüm datetime sütunlarını güncelleyecek olan eklenti geçişi kullanarak geçiş oluşturulabilir mi? Her yerde datetime2'a geçmek için başka kolay bir yolu var mı?

+0

Olası yinelenen [Kuvvet Varlık Framework 5 datetime2 veri türü kullanmak] (https://stackoverflow.com/questions/15248488/force-entity-framework-5-to-use-datetime2-data-type) – hazzik

cevap

8

DB'de datetime2 sütunları oluşturmaya zorlamak için akıcı API'yi kullanabilirsiniz.

Using DateTime properties in Code-First Entity Framework and SQL Server

Sen fikir gerekir:

bunu buldum. Veya, varolan DB'ye bağlı kalmanız gerekirse, özel T-SQL kodunu yürüten bir geçiş oluşturabilmeniz gerekir.

http://msdn.microsoft.com/en-us/data/jj591621.aspx

+0

teşekkürler Floremin. Gerçekten özel SQL ile geçiş yapabilirim. Anahtarı otomatik hale getirmenin bir yolu var mı? Gelecekte herhangi bir yeni Date özelliği için kod-ilk olarak datetime2 kullanmanın herhangi bir yolu var mı? – mykola

+0

Bence ilk link tam olarak bunu açıklıyor. Akıcı API, varsayılan kod ilk davranışını özelleştirmenin yoludur. – Floremin

23

Bu EF eski bir yazı olduğunu, ancak DATETIME2 BÜTÜN tarih saat sütunları geçin ve başka bir deyişle (eklediğiniz tüm yeni sütunlar için datetime2 kullanmak istiyorsanız, yapmak: Burada bir örnek vardır) varsayılan olarak datetime2 kullanmak, kendi bağlamına OnModelCreating yöntemine Bu ekleyebilirsiniz:

modelBuilder.Properties<DateTime>().Configure(c => c.HasColumnType("datetime2")); 

tüm DateTime ve DateTime alacak mı? Modelinizdeki tüm varlıklar üzerindeki özellikler. arasında

+0

Harika çözüm! – arche89

+0

IIRC bu sadece EF6'dır. –

+0

Evet, bu yalnızca EF5'tür, ancak EF5 üzerinde de çalışabilir (EF5 kullanıyorsanız, 6'ya yükseltin!) EF7/EF Core, EF6'dan önemli ölçüde farklı bir uygulamaya sahiptir ve EF4/EF5'in desteklenip desteklenmediğini hatırlamıyorum. bu ya da değil. –