2016-12-20 32 views
5

Modeli ASP.NET Çekirdeğinde Varlık Çerçevesi kullanarak varolan veritabanından oluşturdum. İşte ASP.NET Çekirdek Varlık Çerçevesi'nde varlık sınıfını güncelle

ben veritabanında int için MarketId veri türünü değiştirmek zorunda, ancak Market masanın

public partial class Market 
{ 
     public Guid MarketId { get; set; } 
     public string City { get; set; } 
     public string CityF { get; set; } 
     public string Name { get; set; } 
     public string NameF { get; set; } 
     public int SortOrder { get; set; } 
     public bool IsActive { get; set; } 
} 

modelidir. Şimdi modeli güncellemek istiyorum.

bazı linki Bulunan ancak bu bağlantıyı tekrar tüm model oluşturmak https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db

Nasıl yeni model oluşturma ve appsettings.json bağlantı dizesini kullanmadan modelini güncelleyebilirsiniz?

+2

yeni Bağlam oluşturmak için Azure Connection ve yerel Connection güncellemek '-force' bayrağı ile komut. Bu sayede, iskele sistemini mevcut model dosyalarının üzerine yazmaya zorlayabilirsiniz. – Sanket

+0

niçin 'MarketId'' 'int' olarak değiştirilmiyor? – Backs

+0

El ile değiştirme en iyi seçenek değildir. –

cevap

1

Tüm dbcontext Güncelleştirmek için aşağıdaki komutu kullanın. Daha fazla ayrıntı

"Build failed" on Database First Scaffold-DbContext

Scaffold-DbContext -Connection "Server=(local);Database=DefenderRRCart;Integrated Security=True;Trusted_Connection=True;" -Provider Microsoft.EntityFrameworkCore.SqlServer -OutputDir RRStoreContext.Models -context RRStoreContext -Project RR.DataAccess -force 

için bağlantı

Scaffold-DbContext "Server=<Server Name>,1433;Initial Catalog=<Database Name>;Persist Security Info=False;User ID=<user id>;Password=<password>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Entity -context <Context Name> -Project <project Name> -force 

Sen `İskele-DbContext` kullanabilirsiniz

Scaffold-DbContext "Server=<Server Name>,1433;Initial Catalog=<Database Name>;Persist Security Info=False; 
     User ID=<User Id>;Password=<Password>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection 
     Timeout=30;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir <Dir Name> 
6

Bir seçenek Sen -force bayrağıyla Scaffold-DbContext komutunu kullanabilirsiniz

öyledir. Bu sayede, iskele sistemini mevcut model dosyalarının üzerine yazmaya zorlayabilirsiniz.

örnek komut -

Scaffold-DbContext "<ConnectionString>" Microsoft.EntityFrameworkCore.SqlServer -t <tablename> -f 

ihtiyaçlarınızı göre ConnectionString & TableName değiştirin.

+0

Bu gerçekten yardımcı oldu Teşekkür –

+0

Bu ayrıca ASP.NET Core 2.0'da çalışır. İçerik dosyası başka bir yerde ise, proje kökü içinde otomatik olarak bir bağlam dosyası oluşturur. Ancak, yeni tablo için oluşturulan kod kolayca 'OnModelCreating' ve kaldırılan ekstra içerikten hareket ettirilebilir. – Alexei

İlgili konular