更新ASP.NET核心实体框架中的实体类

San*_*isy 22 c# entity-framework-core asp.net-core

我使用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; }
}
Run Code Online (Sandbox Code Playgroud)

但是,我已将MarketId数据类型更改int为数据库中.现在我想更新模型.

找到一些链接,但此链接再次创建整个模型https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db

如何在不创建新模型和使用连接字符串的情况下更新模型appsettings.json

San*_*ket 25

一种选择是 -

您可以使用Scaffold-DbContext带有-force标志的命令.这样,您可以强制脚手架覆盖现有的模型文件.

示例命令 -

Scaffold-DbContext "<ConnectionString>" Microsoft.EntityFrameworkCore.SqlServer -t <tablename> -f
Run Code Online (Sandbox Code Playgroud)

根据您的要求替换ConnectionString和TableName.


San*_*isy 9

要更新整个dbcontext,请使用以下命令.链接了解更多详情

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
Run Code Online (Sandbox Code Playgroud)

从Azure连接和本地连接更新

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
Run Code Online (Sandbox Code Playgroud)

创建新的Context

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>
Run Code Online (Sandbox Code Playgroud)