Soru Bağlantı Dizeleri ile Kod İlk Geçişi


Bu yüzden Code First'i çalıştırmayı başardım ve harika çalışıyor.

Uygulamayı hala geliştirdiğim için Veritabanının yapısı kesinleşmiyor ve bu yüzden geçişleri uygulamaya koymam gerekiyor.

Takip ettim Resmi Blog Yayını Güncelleme-Veritabanı komutunu çalıştı.

Ancak, bu yalnızca veritabanının SQLExpress sürümünü günceller. Veritabanının üretim sürümü Azure üzerindedir ve bağlantı dizesini çalışma zamanında belirtmem gerekir, bu nedenle Güncelleştirme Veritabanı komutu bu şekilde çalışmaz.

Son sorum şu: Çalışma dizisinde bağlantı dizesi belirtilmiş olan üretim veritabanına otomatik geçişleri nasıl uygularım?


32
2018-02-25 05:26


Menşei


NO app.config ile kontrol ve PM konsolu kullanmayanlar için bu gönderiye bakın stackoverflow.com/questions/15504465/... - phil soady


Cevaplar:


Paket yöneticisi konsolu türünde:

Get-Help Update-Database

İlgili kısmı:

    Update-Database [-SourceMigration <String>] [-TargetMigration <String>] [-Script] [-Force] [-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>] [-ConnectionStringName <String>] [<Com
monParameters>]

Yani sen yapabilirsin Update-Database -ConnectionStringName "MyConnectionString" ve çekicilik gibi çalışmalı.

Ayrıca bir MigrateDatabaseToLatestVersion eğer varsa, veritabanı başlatıcısı Database.SetInitializer()), uygulamanızı doğru bağlantı dizesiyle üretime dağıttığınızda, ilk db erişiminde db'nizi en son sürüme otomatik olarak taşımalıdır.

Dikkatli olmanı öneririm, her zaman yedek şeyler.

Güncelleştirme

@Alexy Strakh'ın son yorumları cevabı koymaya değecek başka bir argüman üretti.

2 ConnectionStrings verildiğinde Kod İlk Geçişlerini kullanarak bir dağıtım sistemini doğru şekilde yapılandırın.

  1. Varsayılan şifrelerle web.config (prod ve dev) içindeki bağlantı dizelerinizi tanımlayın
  2. Uygulamanızın konfigürasyon sistemi prod ve dev bağlantı konfigürasyonları hakkında bilgi sahibi olur, isteğe bağlı olarak doğru olanı seçmek için ünite testleri yapın *
  3. Kullanmak yapılandırma dosyası dönüşümü ve web.config'inizi üretim değerleriyle dönüştürün.
  4. Paketinizi üretime dağıtın (Bu en keskin yol olmalı)

Geliştirme ortamından üretim ortamıyla etkileşime girmemeniz gerekir, ancak eğer siz Gerçekten mi Bunu yapmanız gerekir, daha sonra bitirdiğinizde geri alınması gereken geçici bir çözüm haline getirin.

Başka bir seçenek de Web.Debug.config ve Web.Release.config dosyalarını kullanabilmeniz ve ana web.config (kaynak kontrolünüzde kontrol edebileceğiniz tek şey) için merkezi bir şablon kullanmanızdır.

Sadece üretim veya kişisel gelişim şifrelerini kontrol etmediğinizden emin olun (eğer Herhangi).

* Uygulamanın nasıl çalıştığını kontrol etmek için DEBUG sembolünü kullanabilirsiniz.


49
2018-02-25 18:01



Web.release.config dosyasında belirtilen varsayılan web.config ve prod db bağlantımda belirtilen bir dev veritabanım var. Dev yerine prod kullanmak istiyorum, bunu yapabilir miyim? - Alexey Strakh
Evet, her şekilde, ancak dev / aşamalandırma / üretim için yapılandırma mantığınızın farkında olmak için varlık çerçevesinin (veya herhangi bir depolama teknolojisinin) OLMADIĞINI unutmayın. İhtiyacın olan şey, dosya dönüştürme dönüşümü. msdn.microsoft.com/en-us/library/dd465318%28v=vs.100%29.aspx - WDRust
Yani, o rotayı indirmek istediğinizi varsayalım. Başka ayrıntılarınız veya gereksinimleriniz varsa, başka bir soru sormalısınız (bana ping etmek için çekinmeyin) - WDRust
Sanırım sorum gerçekten özel değildi, biraz detay vermeye çalışmama izin verin. EF6.1 koduyla ilk ve veri geçişi ile asp.net projem var. İki yapılandırmam var: dev, prod. dev yapılandırma web.config dosyasında tanımlanmıştır. Benim için dönüşüm dosyasını tanımladım prod konfigürasyon da, her defasında prod konfigürasyon dönüşümüne geçiyorum. Sorun şu ki, güncelleme veritabanını aradığımda nuget yöneticisi benim kullanmaya devam ediyor dev prod. Yani web.config (varsayılan) açmak ve orada bir prod veritabanı bağlantısı geçici olarak tanımlamak zorundayım - Alexey Strakh
Güncelleme yanıtı. - WDRust


Entity Framework'ün EF Migrations Add-Migration adımı neden bir veritabanı bağlantı dizesi gerektirir?

Uzun vadede daha az emek gerektiren bir çözüm var. Aynı ada sahip bir bağlantı dizesi oluşturuyormuşsunuz gibi

Senin bağlamında : Baz ( "DBName")

Bağlantı dizesi adı ve ilk katalog belirttiğiniz DBName ile eşleşir ve her seferinde bağlantı dizesi adını girmeniz gerekmez.


4
2018-01-11 09:58