【问题标题】:How to add Sql Server View in existing Database Context in EntityFramework Core如何在 EntityFramework Core 的现有数据库上下文中添加 Sql Server 视图
【发布时间】:2021-03-05 09:00:50
【问题描述】:

大家好 我创建了一个 Asp.Net 核心 MVC 应用程序,并使用 Database First 方法成功创建了 DB 上下文。现在我创建了一个 SQL Server 视图。我现在想将此视图(仅视图)添加到现有的 DBContext 中。请指导我如何仅将此视图构建到数据库上下文中,以便我可以为此创建模型类。

"connectionString": "Data Source=TestServer;Initial Catalog=TestDB;user=TestUser;password=TestPassword;"

并且已经存在的模型类在模型文件夹中。

感谢您的快速回复。

【问题讨论】:

  • 嗨@ShakilAhmed,关于此案的任何更新?

标签: asp.net-core


【解决方案1】:

现在我已经创建了一个 SQL Server 视图。我现在想将此视图(仅视图)添加到现有的 DBContext 中。请指导我如何仅将此视图构建到数据库上下文中,以便我可以为此创建模型类。

您可以尝试在-Tables 参数中指定视图的名称,如下所示,这将有助于创建实体并映射到该视图。

Scaffold-DbContext "connection_string_here" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables "MyView1" -ContextDir Context -Context MyDbContext -Force

要为视图提供支架类型,您可以参考以下文档:

【讨论】:

    【解决方案2】:

    首先,我们需要向数据库中添加一个视图。最好的方法是使用适当的 SQL 添加数据库迁移。让我们从使用 EF Core 全局工具命令添加迁移开始:

     dotnet ef migrations add vwGuestArrivals
    
    

    这将生成一个迁移,我们可以将我们的 SQL 放入其中。让我们看看它的外观:

    public partial class vwGuestArrivals : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            var sql = @"
                CREATE OR ALTER VIEW [dbo].[vwRoomsOccupied] AS
                    SELECT r.[From], r.[To], ro.Number As RoomNumber, ro.Level, ro.WithBathroom
                    FROM Reservations r
                    JOIN Rooms ro ON r.RoomId = ro.Id";
    
            migrationBuilder.Sql(sql);
        }
    
        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.Sql(@"DROP VIEW vwRoomsOccupied");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      • 2023-01-19
      • 1970-01-01
      • 2022-12-02
      • 2017-01-24
      • 1970-01-01
      • 2021-01-16
      相关资源
      最近更新 更多