【发布时间】:2011-05-04 21:09:13
【问题描述】:
如何使用 Entity Framework 4 Code-First 定义数据库视图?我在任何地方都找不到关于此的任何信息!
【问题讨论】:
标签: ef-code-first entity-framework-4.1
如何使用 Entity Framework 4 Code-First 定义数据库视图?我在任何地方都找不到关于此的任何信息!
【问题讨论】:
标签: ef-code-first entity-framework-4.1
这是因为您无法使用代码优先的方法定义数据库视图。数据库视图是在现有表/函数之上使用 SQL 查询的数据库结构。你不能先用代码定义这样的结构。
如果您想要查看,您必须通过执行CREATE VIEW SQL 脚本手动创建它,例如在自定义初始化程序中 - 它类似于this answer。请注意,如果您想将实体映射到视图,这对您没有帮助。在这种情况下,您可能必须首先删除由 EF 创建的表并创建具有相同名称的视图(我没有尝试过,但它可以解决问题)。另请注意,并非每个视图都是 udpatable,因此您很可能会获得只读实体。
【讨论】:
要创建模型,然后在初始化程序中运行 SQL 语句以使用第一行代码直接针对上下文创建视图,然后在上下文中覆盖 OnModelCreating 并运行第二行忽略模型的代码。
context.Database.ExecuteSqlCommand(Resources.<resourcename>);
modelBuilder.Ignore<modeltype>();
【讨论】: