我使用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
中的连接字符串的情况下更新模型?
答案 0 :(得分:19)
一个选项是 -
您可以使用带有Scaffold-DbContext
标志的-force
命令。这样就可以强制脚手架覆盖现有的模型文件。
示例命令 -
Scaffold-DbContext "<ConnectionString>" Microsoft.EntityFrameworkCore.SqlServer -t <tablename> -f
替换ConnectionString&amp; TableName根据您的要求。
答案 1 :(得分:5)
要更新整个dbcontext,请使用以下命令。链接了解更多详情
"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
从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
创建新的上下文
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>