如何使用Entity Framework 4 Code-First定义数据库视图?我无法在任何地方找到任何有关此事的信如何使用Entity Framework 4 Code-First定义数据库视图?
回答
这是因为您无法使用代码优先方法定义数据库视图。数据库视图是在现有表/函数之上使用SQL查询的数据库结构。你不能先用代码定义这样的结构。
如果您想查看,您必须通过在自定义初始化程序中执行CREATE VIEW
SQL脚本手动创建它 - 它将类似于this answer。请注意,如果您想将实体映射到视图,这不会对您有所帮助。在这种情况下,您可能必须首先删除由EF创建的表,然后使用相同的名称创建视图(我没有尝试过,但它可以实现)。另外请注意,并非每个视图都是udpatable,因此您最有可能获得只读实体。
要做一个视图你创建模型,然后在初始化器中运行SQL语句直接创建与第一行代码的上下文视图,然后在上下文中重写OnModelCreating并运行第二行的代码来忽略模型。
context.Database.ExecuteSqlCommand(Resources.<resourcename>);
modelBuilder.Ignore<modeltype>();
这个工作,我喜欢它,因为它消除了需要删除EF创建的表。但是应该指出的是,这种方法不能在EF模型中使用视图。 – 2012-06-19 10:20:59
@StephanKeller这是正确的,最终由于EF代码优先方法的局限性,我最终不得不回到老式的EDMX。说实话,如果你的应用程序做了什么,你将无法使用EF代码优先的方法。但最终不应该那么令人惊讶,因为自动化只能走得太远。所以+1。 – 2012-06-19 11:20:55
- 1. Entity FrameWork CodeFirst-表名
- 2. 如何使用Entity Framework从数据库获取数据?
- 3. 数据绑定使用SQLite和Entity Framework
- 4. 如何使用Entity Framework 4从Oracle数据库读取最大精度值?
- 5. 如何使用Entity Framework 4组织连接到不同的数据库?
- 6. 使用Entity Framework的SQL视图
- 7. 如何使用Entity Framework在本地保存数据库
- 8. 确实Entity Framework支持数据库视图?
- 9. 我们可以在Entity Framework中映射数据库视图吗?
- 10. 使用WebApi&Entity Framework从数据库获取表数据6.XX
- 11. Entity Framework 4和Velocity
- 12. Connection.BeginTransaction和Entity Framework 4?
- 13. 如何使用linq/Entity Framework绑定gridview?
- 14. 如何使用asp.net Entity Framework配置mysql?
- 15. 如何使用Entity Framework 5.0?
- 16. 如何在Entity Framework 6中正确定义关联 - 数据库优先?
- 17. 如何用Entity Framework和Membership表初始化数据库
- 18. 使用Entity Framework时与元数据相关的异常4
- 19. 用Entity Framework 4创建blob属性?
- 20. 如何用Entity Framework解决不好的数据库设计?
- 21. 如何用Entity Framework Core可视化地设计我的数据库?
- 22. Entity Framework 4 INNER JOIN帮助
- 23. 可以使用Entity Framework来生成SQL Server Compact数据库
- 24. 使用Entity Framework 4.1和SQLITE
- 25. ASP.NET MVC&Entity Framework:如何在视图中呈现自定义模型?
- 26. 如何在Entity Framework和ASP.NET MVC 4中使用groupby子句?
- 27. 如何从Entity Framework中的.edmx文件生成数据库?
- 28. 如何在Entity Framework 4中使用我的存储过程?
- 29. 如何在不使用App.config的情况下使用Entity Framework
- 30. 使用SQL Compact 4和Entity Framework 4部署WPF?
是的,你是对的。事实上,我已经意识到,在代码中定义视图并没有太多意义。 :) – 2011-05-05 08:33:34
我使用EF构建数据库时,在项目的初始化程序中实现了“删除表并添加视图”。没有多少乐趣,但确实有效。如果那样会使你迁移是一个悬而未决的问题。我正在寻找一种更清晰的方法来告诉EF Code First * not *生成特定表格。 – jlo 2012-06-07 18:15:38
@Ladislav这就是为什么这个新的EF代码优先的框架是唯一可行的,如果你的应用程序没有复杂性,除了房屋数据以外没有其他任何事情。如果应用程序实际上做了什么 - 您将不得不坚持使用EDMX或您选择的其他ORM系统。 – 2012-06-19 11:23:10