2016-12-20 12 views
5

Utworzono model z istniejącej bazy danych przy użyciu Entity Framework w środowisku ASP.NET Core.Zaktualizuj klasę encji w programie ASP.NET Core Entity Framework

Oto model stołu

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; } 
} 

Market Mam jednak zmienić MarketId typ danych do int w bazie danych. Teraz chcę zaktualizować model.

Znaleziono jakiś link, ale ten link stworzyć cały model ponownie https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db

Jak mogę zaktualizować model bez tworzenia nowego modelu i przy użyciu ciąg połączenia w appsettings.json?

+2

Można użyć 'Scaffold-DbContext' polecenie z flagą '-force'. W ten sposób możesz wymusić na rusztowaniu nadpisanie istniejących plików modeli. – Sanket

+0

dlaczego nie wystarczy zmienić 'MarketId' na' int'? – Backs

+0

Ręczna zmiana nie jest najlepszą opcją. –

Odpowiedz

1

Aby zaktualizować cały kontekst dbcontext, użyj poniższej komendy. Więcej szczegółów pod odnośnikiem

"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 

Aby zaktualizować z połączenia Azure i połączenie lokalne

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 

Aby utworzyć nowy kontekst

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

Jedną z opcji jest-

Można użyć polecenia Scaffold-DbContext z -force flagi. W ten sposób możesz wymusić na rusztowaniu nadpisanie istniejących plików modeli.

próbka poleceń -

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

Zamień ConnectionString & TableName jak na swoje wymagania.

+0

To naprawdę pomogło Dzięki –

+0

Działa to również w ASP.NET Core 2.0. Automatycznie wygeneruje plik kontekstowy w katalogu głównym projektu, jeśli plik kontekstu znajduje się gdzie indziej. Wygenerowany kod dla nowej tabeli można jednak łatwo przenieść z 'OnModelCreating' i usunąć dodatkowy kontekst. – Alexei

Powiązane problemy