Yanıtlar:
Modeli senkronize etmenin üç yolu vardır.
Değiştirilen tabloları tasarımcıdan silin ve Veritabanı Gezgini'nden tasarımcı yüzeyine geri sürükleyin. Bunun güvenilir bir şekilde çalışması için şunları yapmanız gerektiğini buldum:
a. Veritabanı Gezgini'nde veritabanı şemasını yenileyin (sağ tıklayın, yenileyin)
b. Tabloları sildikten sonra tasarımcıyı kaydedin
c. Tabloları geri sürükledikten sonra tekrar kaydedin.
Not (bir dernek çocuk özelliği kapatarak, örneğin) herhangi değişikliğe uğramış özellikler takdirde, bu besbelli bu modifikasyonları kaybedecek olsa - Yine bunları yapmak gerekecek.
Şemayı veritabanınızdan yeniden oluşturmak için SQLMetal kullanın. Ben göstermek blog gönderileri bir dizi gördük nasıl komut dosyasına bu .
Doğrudan DBML'nin Özellikler bölmesinde değişiklik yapın. Bu, bir alanda boş değerlere izin vermek gibi basit değişiklikler için geçerlidir.
DBML tasarımcısı Visual Studio 2015, 2017 veya 2019'da varsayılan olarak yüklenmez. VS'yi kapatmanız, VS yükleyicisini başlatmanız ve yüklemenizi değiştirmeniz gerekir. SQL araçlarına LINQ yüklemek gerekir özelliğidir. VS 2017/2019 için, Bireysel Bileşenler> Kod Araçları altında bulabilirsiniz .
.Dbml diyagramınızdaki bir tabloyu, örneğin eklenen sütunlarla güncellemek için şunu yapın:
Ayrıca LinS -to-SQL için ve çok düzgün şeyler yapmanıza izin veren CodeSmith'e dayanan PLINQO kod oluşturma şablonları kümesine de göz atabilirsiniz :
Http://www.plinqo.com adresindeki PLINQO sitesine göz atın ve tanıtım videolarına göz atın.
Bildiğim ikinci araç , DBML (Linq-to-SQL) ve EDMX (Entity Framework) eşleme dosyalarının ve daha fazlasının (adlandırma kuralları vb.) Güncellenmesine izin veren Huagati DBML / EDMX araçlarıdır .
üzüm posası
Tüm .DBML dosyalarımızdaki her tablo için information_schema modelini dinamik olarak sorgulayan ve .DBML dosyasının bazı bölümlerini veritabanından yeni şema bilgileriyle yazan özel bir yazılı T4 şablonu kullanırız. Ben çokbunun gibi bir çözüm uygulamanızı öneririz - bana çok zaman kazandırdı ve tablolarınızı silmenin ve modelinize yeniden eklemenin aksine derneklerinizi koruyacaksınız. Bu çözümle, şemanız değiştiğinde derleme zamanı hataları alırsınız. Yine de bir sürüm kontrol sistemi kullandığınızdan emin olmak istersiniz, çünkü fark gerçekten kullanışlı. Bu, bir DB şeması ilk yaklaşımı ile geliştiriyorsanız iyi çalışan harika bir çözümdür. Tabii ki, şirketimin kodunu paylaşamıyorum, bu yüzden bunu kendiniz yazmak için tek başınızasınız. Ancak bazı Linq-to-XML biliyorsanız ve bu projede okula gidebiliyorsanız , istediğiniz yere gidebilirsiniz.
Ben dbml güncelleme de sizin için oluşturulan kodu güncellediği gibi VS2008 yerleşik görsel tasarımcısı kullanmanızı tavsiye ederim. Görsel tasarımcı dışında dbml değiştirmek, temel kod eşitleme ile sonuçlanır.
Tabloları güncellemek ve sonra DBML'yi güncellemek için bir nüans vardır ... Varolan tablolarda değişiklik yapılırsa yabancı anahtar ilişkileri hemen her zaman getirilmez. Çözüm, projenin bir yapısını yapmak ve daha sonra tabloları yeniden eklemek. Bunu MS'ye bildirdim ve VS2010 için sabitlendi.
DBML ekranı yeni yabancı anahtar kısıtlamaları göstermiyor
Ana cevapta verilen talimatların net olmadığını unutmayın. Tabloyu güncellemek için
Saklı yordam güncelleştirmesi durumunda, bu dosyayı .dbml dosyasından silmeli ve yeniden yüklemelisiniz. Ancak, saklı yordamın iki yolu varsa (ör. Bir şey varsa; bazı sütunları görüntüleyin; başka bazı sütunları görüntüleyin), iki yolun aynı sütun takma adlarına sahip olduğundan emin olun !!! Aksi takdirde yalnızca ilk yol sütunları bulunur.
İşte LINQ SQL dbml ve ilişkili dosyaları veritabanı tablolarından birine eklediğim yeni bir sütun içerecek şekilde güncelleştirmek için benim için çalışan tam adım adım yöntem.
Yukarıdakilerin önerdiği gibi tasarım yüzeyinizde değişiklik yapmanız gerekir; ancak, fazladan bazı adımlar atmanız gerekir. Bunlar tam adımlardır:
1. Drag your updated table from Server Explorer onto the design surface
2. Copy the new column from this "new" table to the "old" table (see M463 answer for details on this step)
3. Delete the "new" table that you just dragged over
4. Click and highlight the stored procedure, then delete it
5. Drag the new stored procedure and drop into place.
6. Delete the .designer.vb file in the code-behind of the .dbml
(if you do not delete this, your code-behind containing the schema will
not update even if you rebuild and the new table field will not be included)
7. Clean and Rebuild the solution (this will rebuild the .designer.vb file to include all the new changes!).