5

Şu an her zaman EF kullanıyordum, her zaman Model-First yaklaşımında. Şimdi ben Code-First topraklarında dolaşıyorum. Sorun şu ki: Otomatik tablo oluşturma ile ilgili sorunlar yaşıyorum. Bazı sitelere göre mümkündür. Ve onların yaklaşımını hiç başarı ile denedim. ... Database.CreateIfNotExists()EntityFramework tablo oluşturmuyor

Hayır şans

Benim bağlantı dizesi mükemmel ve çalışır durumda:

İşte ben denedim şeylerden biri. Tabloyu manuel olarak eklerseniz çalışır. Sorun, tablonun oluşturulmadığı zamandır. Sadece söylendiği gibi yaratmıyor.

Derslerim düzgün bir şekilde dekore edilmiştir. (Tekrar: DB'leri oluşturduğumda çalışıyor)

Herhangi bir öneriniz var mı? Bu özellik gerçekten çalışıyor mu?

kullanıyorum:

Visual Studio 2010 Professional

EntityFramework 4.3.1 R2

SQL Server 2008 (Ben de 4.1 ile çalıştı rağmen)

Teşekkür önceden.

+0

DbContext'ten türeyen kendi içerik sınıfınızı oluşturdunuz mu? ve sonra da 0bbp Bağlamları – Sergey

+2

Database.CreateIfNotExists() öğesinde kullanacak bir çağrı yapın, yalnızca veritabanının kendisi yoksa (bu durumda veritabanı ve tabloyu oluşturursa) tabloyu oluşturmak için EF neden olur. Bir veritabanı varsa, tabloyu otomatik olarak oluşturmasına neden olmaz, ancak tablo eksik olur. Bu senin yaşadığın şey mi? –

+0

@Sergey Evet, bunu yaptım. – eestein

cevap

5

Hepsinin IDatabaseInitializer<Context> arabirimini uyguladığı varlık çerçevesine dahil edilen üç veritabanı başlatıcısı vardır. Bunlar:

  • CreateDatabaseIfNotExist (varsayılan)
  • DropCreateDatabaseWhenModelChanges
  • DropCreateDatabaseAlways

varsayılan API sadece tablolar oluşturur başlatıcı yok Gördüğünüz gibi, bunun yerine tüm veritabanını yapar. Bununla birlikte, insanların yarattığı diğer başlatıcılar da var, istediğin aynı şeyi yapan bir tane var.

O Nuget paketinin EFCodeFirst.CreateTablesOnly

Başka bir seçenek olduğunu gerçekten gereken bir şey varsa kendi başlatıcı yaratmaktır içinde.

+0

Cevabınız için teşekkürler. Daha sonra bu gece bunu deneyeceğim ve cevabı kabul ederek nasıl gittiğini anlatayım. Tekrar teşekkürler! – eestein

+0

Rica ederim :) – Sergey

+0

Bu işe yaradı, teşekkürler dostum. – eestein