5

Eki için EF Veritabanı Başlatma işlemini durdurma Ekibim, dağıttığım bir ASP.NET MVC uygulamasına sahibim. Uyguladığımda, uygulama gayet iyi çalışıyor, fakat ben Membership.CreateUser'u aradığımda, zaten var olsa bile veritabanını oluşturmaya çalışıyorum. Veritabanına zaten sahip olduğundan, CreateMembershipEntities'u aramayı denememek için ne yapmam gerekiyor?DefaultMembershipProvider

Hiçbir şey yapmayan bir başlatıcıya Database.SetInitializer'u denedim, Web.config'te defaultConnectionFactory'u kaldırmayı denedim - Şu anda seçenekler dışındayım.

Yardımlarınız için sabırsızlıkla bekliyorum!

GÜNCELLEME Sadece veritabanı oluşturmak için çalışıyor sebebi barındıran sunucuları bağlantı sysdatabases sorgulamak için izin vermez ve dolayısıyla veri tabanı asla bulunduğundan ve dolayısıyla her zaman olduğu dün öğrendim

yaratmaya çalışıyor. Eski moda AspNet üyelik sağlayıcısına geri dönmem ve EF kodunun ilk modelinden ayrılmam gerekebilir.

<rant> Daha kişisel bir notta Microsoft'a bildirmek istedim, hiçbir şey için teşekkürler! Bu kod ilk modeli, sahip olduğunuz sunucularda dağıtılan uygulamalarla iyi çalışır; ancak bunları bulutta (her şeyin olduğu yerde) koyun ve şansınız kalmaz. Harika iş Microsoft! Neden var olup olmadığını görmek için veritabanına bağlanmayı denemeyin?!? Bağlantı başarılı olursa mevcut olmalıdır - aksi halde sanırım olmaz. </rant>

+0

"* Hiçbir şey yapmayan bir başlatıcıya Database.SetInitializer denedim *": DB başlatmayı devre dışı bırakmak için normal yol başlatıcıyı "null", yani 'Database.SetInitializer (null)' olarak ayarlamaktır. Ancak, bu EF şeylerinin, Depolanmış Prosedürü kullanan ve kendi bağlantılarını kullanan bir ASP.NET ÜyelikProvideri ile ne yapması gerektiğine dair hiçbir fikrim yok (sağlayıcısını bir şekilde özelleştirmediyseniz). Başlatıcıyı "null" olarak ayarlamak problemi çözerse şaşırırım. – Slauma

+0

@Slauma Yapmakta olduğum sorun, üretim veritabanında zaten var olduğunda üyelik tabloları oluşturmaya çalıştığıdır. Üretim sunucusunda DROP ve CREATE veritabanı erişimi yok. Burada dikkat edilmesi gereken bir başka şey de üretim sunucusunun GoDaddy ve kullanıyorum üyelik sağlayıcısının yeni bir ASP.NET MVC 4 uygulamasında yapılandırdığı DefaultMembershipProvider olmasıdır. Geliştirme kutumda harika çalışıyor. –

cevap

1

burada bir görünüm vermek: http://www.qualitydata.com/learn/web-config-membership-provider-settings Bu web.config Üyelik yapılandırması bölümü gösterir. Benzer bir bölüm yazmalı ve connectionStringName = "Bağlantı Dizginiz" yazmalısınız. Bağlantı dizinizde zaten varolan veritabanının bilgilerini belirtin.

+0

Cevabınız için teşekkür ederiz. Sana hızlı bir soru sormama izin ver. Son zamanlarda - dün öğleden sonra gibi - bu kadar çok sorun yaşıyorum nedeni, ana bilgisayarların bağlantı dizesi 'sysdatabases' sorgulamasına izin vermemesidir. Ve ilk yaklaşımı EF kodu kullandığım için varsayılan üyelik sağlayıcısı veritabanının varlığını doğrulamaya çalışır. Eski moda AspNet üyelik sağlayıcısına geri dönmeli miyim? Sadece temiz değil. –

+0

Sorunun cevabı, DefaultMembershipProvider yerine SqlMembershipProvider kullanmaktı. SqlMembershipProvider, üyelik sağlayıcı arayüzlerine uygundur, ancak eskiden olduğu gibi çalışır - eğer mevcut değilse bir veritabanı oluşturmaya çalışmaz. Herkese tavsiyem, EF kodunu ilk şeyler KULLANMAMAKTIR. –

+0

Bu cevaptaki link eskidir ... onsuz cevapta herhangi bir yararlı bilgi olduğunu düşünmüyorum? – ChrisW