我的数据库中有一个名为“viewUsers”的视图,我需要使用其他实体生成的表对其进行操作。如何在实体中检索此数据库视图?
问问题
2389 次
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 回答