我在C#项目中搭建了几张桌子。现在我需要搭建一个新表。我不想重新支持现有的因为有一些变化。
Scaffold-DbContext "Server=...;Database=...;...;" Microsoft.EntityFrameworkCore.SqlServer `
-OutputDir Models -Tables newTable
该命令将出现以下错误。
目录C:\ Users .... \ Models中已存在以下文件:myContext.cs,newTable.cs。使用强制标志覆盖这些文件。
使用-Force
将覆盖现有表的现有代码。
答案 0 :(得分:1)
它将帮助您更改现有的DbContext文件。
如果您创建了一个新表,那么New Class(实体)将在您的Models文件夹中创建,如果您删除现有表,那么它将删除Models文件夹中的类(实体)。
对于程序包管理器控制台
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()。
答案 1 :(得分:1)
我希望有一种内置的方法来添加实体和更新现有的上下文,但是似乎没有。我通过使用包管理器控制台中的--context
选项克服了这个问题,并给了它一个临时名称,例如--context TempContext
。这工作并生成了新表和临时上下文。然后,我只是将public virtual DbSet<NewEntityType> NewEntityType { get; set; }
属性和modelBuilder.Entity<NewEntityType>(entity =>
块从temp上下文中的OnModelCreating
方法复制到了现有的。之后,我删除了临时上下文。非常简单。