如何在 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)。
我正在使用 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)。