更新ASP.NET核心实体框架

时间:2016-12-20 00:49:49

标签: c# asp.net-core entity-framework-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; }
}

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

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

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

2 个答案:

答案 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>