如何在 mvc C# 中执行 sql 视图并将其结果存储在列表中?

How to execute an sql view in mvc C# and store its result in a list?

我正在使用 C# 开发 asp.net mvc 应用程序。对于数据库,我使用 Entity Framework 和代码优先的方法。我有一个 sql 视图,我需要执行并将其结果存储在列表中。我知道如何使用 ApplicationDbContext、存储过程和内联查询从数据库中查询数据。但现在我想用视图做同样的事情。

视图看起来像这样

CREATE VIEW [dbo].[GenresView]
AS SELECT * FROM Genres

我有一个流派 class,它具有与视图 return 相同的属性。

处理视图的步骤:

  • 创建一个 GenresView class,并将属性映射到视图列。您可以使用虚拟属性和 ForeignKey 注释等 EF 功能来加载与查询中的视图相关的实体。
  • 将创建的实体作为新 属性 DbSet GenresView 添加到您的数据库上下文中。
  • 使用包管理器控制台添加新迁移并添加迁移命令。 正如您所注意到的,生成的迁移包含用于在 Up() 方法中为 GenresView 创建新的 table 的语句。删除此代码并将其替换为 Sql(@"CREATE VIEW dbo.GenresView AS SELECT * FROM Genres") 语句。

重要!!!最好定义所有要获取的字段而不是 * .

  • 您还应该替换 Down() 方法中的代码,以便能够正确还原迁移。其代码应包含对 Sql(@"DROP VIEW dbo.GenresView").
  • 的调用
  • 更新数据库。
  • 现在您可以在 LINQ 语句中使用新实体,就像它是常规 table(例如 dbContext.GenresView)。