1

我的数据库中有一个名为“viewUsers”的视图,我需要使用其他实体生成的表对其进行操作。如何在实体中检索此数据库视图?

4

1 回答 1

2

在向导中,您可以选择视图。EF 会照顾好休息。详细示例 在这里

在此处输入图像描述

编辑:根据评论(如何在codefirst中进行),

从 Entity Framework 4.2 开始,Codefirst 仅支持表。这意味着它只能生成包含表的模式。但是,如果您正在使用现有数据库,则可以将可更新视图与实体映射。您可以使用实体框架来选择、插入、更新和删除数据。这与表格相同。由于这些操作的表和视图的 SQL 语法是相同的,我们在向 codefirst 撒谎,因为视图是表!

例如:如果我们想从vwCustomerDetails为实体调用的视图中获取数据CustomerDetail,我们可以使用数据注释来执行此操作

[Table("vwCustomerDetails")]
public class CustomerDetail
{
  // properties
}

或者,使用 Fluent API,您可以执行此操作,

modelBuilder.Entity<CustomerDetail>().ToTable("vwCustomerDetails");

从普通视图加载数据

有时您可能希望从另一个视图加载一些数据,该视图返回与我们的初始假表(视图)相同的结果。例如:在某些页面中,我们需要显示得分最高的前十名 CustomerDetails。假设我们有一个单独的视图调用vwTop10Customers它。我们可以使用 DBSet 上的 SqlQuery 方法来加载这样的 entotues

var topCustomers=dbContext.CustomerDetails.SqlQuery("SELECT * FROM  vwTop10Customers");

视图必须返回与实体完全相同的列名。否则 EF 将在映射时遇到问题。

于 2012-05-08T20:23:47.753 回答