web-dev-qa-db-ja.com

ASP.NET Core Entity Frameworkのエンティティクラスを更新する

ASP.NET CoreのEntity Frameworkを使用して、既存のデータベースからモデルを作成しました。

Marketテーブルのモデルは次のとおりです

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

ただし、データベースのMarketIdデータ型をintに変更しました。次に、モデルを更新します。

いくつかのリンクが見つかりましたが、このリンクはモデル全体を再度作成します https://docs.Microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db

新しいモデルを作成せずにappsettings.jsonの接続文字列を使用せずにモデルを更新するにはどうすればよいですか?

20
San Jaisy

Dbcontext全体を更新するには、以下のコマンドを使用します。詳細についてはリンク

データベースの最初の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

Azure Connectionおよびローカル接続から更新するには

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

新しいコンテキストを作成するには

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>
8
San Jaisy

1つのオプションは

Scaffold-DbContextコマンドと-forceフラグを使用できます。これにより、scaffoldingに既存のモデルファイルを上書きさせることができます。

サンプルコマンド-

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

要件に従って、ConnectionStringとTableNameを置き換えます。

22
Sanket