我在一个C#项目中搭建了几个表。现在我需要用脚手架换张新桌子。我不想重新搭建现有的支架,因为有一些变化。
Scaffold-DbContext "Server=...;Database=...;...;" Microsoft.EntityFrameworkCore.SqlServer `
-OutputDir Models -Tables newTable该命令将得到以下错误。
目录C中已经存在以下文件:\Users.\Models: myContext.cs,newTable.cs。使用Force标志覆盖这些文件。
使用-Force将覆盖现有表的现有代码。
发布于 2018-11-01 14:02:56
我希望有一个内置的方式添加实体和更新一个现有的上下文,但似乎没有。我克服了这一点,在包管理器控制台中使用了--context选项,并给它一个临时名称,例如--context TempContext。这起作用并生成了新的表和临时上下文。然后,我将public virtual DbSet<NewEntityType> NewEntityType { get; set; }属性和modelBuilder.Entity<NewEntityType>(entity =>块从临时上下文中的OnModelCreating方法复制到现有的方法中。之后,我删除了临时上下文。很简单。
发布于 2018-06-07 07:02:47
它将帮助您更改现有的DbContext文件。
如果您已经创建了一个新表,那么new (实体)将在您的Models文件夹中创建,如果您删除了现有的表,那么它将在您的Model文件夹中删除类(实体)。
软件包管理器控制台的
BloggingContext是我自己的数据库上下文文件,您必须更改您的名称。
在Package控制台中使用命令
Scaffold-DbContext "Server=SERVER_NAME; Database=DATABASE_NAME; User Id=USER_ID; Password=PASWWORD;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -context "BloggingContext" -Force
一个对话框将打开。选择适当的选项。
我选择“对所有人都是”
并从OnConfiguring文件中删除BloggingContext.cs ()。
发布于 2022-06-27 21:23:39
我通常保留一个小文本文件来构建这个用于脚手架的命令,并将每个表都添加到其中。
每次我执行时,所有的模型都会被覆盖。
如果您在脚手架之后编写的这些模型中有任何逻辑,在模型中的字段之上,atm --我建议编写一个包装类,这个类是从这个模型扩展而来的,并且实现了其他方法。这样,您的逻辑就不会被覆盖,只要模型名称保持不变,模型包装器就会继续从它扩展。
我只是比较新的脚手架,我希望会有一个更好的方法在2022年!?
https://stackoverflow.com/questions/44789685
复制相似问题