ca9*_*3d9 8 c# entity-framework visual-studio
我在 C# 项目中搭建了几个表。现在我需要搭建一个新桌子。我不想重新搭建现有的脚手架,因为有一些变化。
Scaffold-DbContext "Server=...;Database=...;...;" Microsoft.EntityFrameworkCore.SqlServer `
-OutputDir Models -Tables newTable
Run Code Online (Sandbox Code Playgroud)
该命令将得到以下错误。
目录 C:\Users....\Models 中已存在以下文件:myContext.cs,newTable.cs。使用 Force 标志覆盖这些文件。
使用-Force将覆盖现有表的现有代码。
我希望有一种内置的方式来添加实体和更新现有的上下文,但似乎没有。我通过使用--context包管理器控制台中的选项克服了这个问题,只是给了它一个临时名称,例如--context TempContext. 这有效并生成了新表和临时上下文。然后我只是将临时上下文中的方法中的public virtual DbSet<NewEntityType> NewEntityType { get; set; }属性和modelBuilder.Entity<NewEntityType>(entity =>块复制OnModelCreating到我现有的方法中。之后,我删除了临时上下文。这很简单。
它将帮助您更改现有的 DbContext 文件。
如果您创建了一个新表,那么将在您的模型文件夹中创建新类(实体),如果您删除现有表,那么它将删除您的模型文件夹中的类(实体)。
对于包管理器控制台
BloggingContext是我自己的数据库上下文文件,你必须按你的名字更改。
在包管理器控制台中使用命令
Scaffold-DbContext "Server=SERVER_NAME; Database=DATABASE_NAME; User Id=USER_ID; Password=PASWWORD;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -context "BloggingContext" -Force
将打开一个对话框。选择适当的选项。
我选择“全部同意”
并从 BloggingContext.cs 文件中删除 OnConfiguring()。