【问题标题】:Scaffold new tables and keep the existed ones?搭建新桌子并保留现有桌子?
【发布时间】:2017-06-27 20:54:49
【问题描述】:

我在一个 C# 项目中搭建了几个表。现在我需要搭建一个新表。我不想重新搭建现有的脚手架,因为有一些变化。

Scaffold-DbContext "Server=...;Database=...;...;" Microsoft.EntityFrameworkCore.SqlServer `
-OutputDir Models -Tables newTable

该命令将得到以下错误。

目录 C:\Users....\Models 中已存在以下文件:myContext.cs,newTable.cs。使用 Force 标志覆盖这些文件。

使用-Force 将覆盖现有表的现有代码。

【问题讨论】:

    标签: c# visual-studio entity-framework


    【解决方案1】:

    我希望有一种内置方式来添加实体和更新现有上下文,但似乎没有。我通过在包管理器控制台中使用--context 选项克服了这个问题,并给它起了一个临时名称,例如--context TempContext。这有效并生成了新表和临时上下文。然后我只是将public virtual DbSet<NewEntityType> NewEntityType { get; set; } 属性和modelBuilder.Entity<NewEntityType>(entity => 块从临时上下文中的OnModelCreating 方法复制到我现有的。之后,我删除了临时上下文。这很简单。

    【讨论】:

      【解决方案2】:

      它将帮助您更改现有的 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()。

      【讨论】:

        猜你喜欢
        • 2017-08-21
        • 1970-01-01
        • 2019-02-25
        • 1970-01-01
        • 2021-04-19
        • 1970-01-01
        • 2012-05-23
        • 1970-01-01
        相关资源
        最近更新 更多