当前位置:  开发笔记 > 数据库 > 正文

如何使用Entity Framework 4 Code-First定义数据库视图?

如何解决《如何使用EntityFramework4Code-First定义数据库视图?》经验,为你挑选了2个好方法。

如何使用Entity Framework 4 Code-First定义数据库视图?我在任何地方都找不到任何相关的东西!



1> Ladislav Mrn..:

那是因为您无法使用代码优先方法定义数据库视图.数据库视图是数据库构造,它在现有表/函数之上使用SQL Query.您不能首先使用代码定义此类构造.

如果你想要查看,你必须通过执行CREATE VIEWSQL脚本手动创建它,例如在自定义初始化程序中 - 它将类似于这个答案.请注意,如果要将实体映射到视图,这对您无济于事.在这种情况下,您可能必须首先删除由EF创建的表并创建具有相同名称的视图(我没有尝试它,但它可以做到这一点).另请注意,并非每个视图都是udpatable,因此您很可能会获得只读实体.


@Ladislav这就是为什么这个新的EF代码优先框架只有在你的应用程序没有复杂性且除了内部数据之外什么都不做的情况下才可行.如果应用程序实际上做了某些事情 - 您将不得不坚持使用EDMX或您选择的其他ORM系统.

2> Mike Perreno..:

要创建模型,然后在初始化程序中运行SQL语句以使用第一行代码直接创建视图,然后在上下文中重写OnModelCreating并运行第二行代码以忽略该模型.

context.Database.ExecuteSqlCommand(Resources.);

modelBuilder.Ignore();


这是有效的,我喜欢它,因为它不需要删除EF创建的表.但应该注意的是,这种方式不能在EF模型中使用视图.
@StephanKeller这是正确的,最后由于EF代码优先方法的局限性,最终我不得不回到老式的EDMX.说实话,如果您的应用程序执行任何操作,您将无法使用EF代码优先方法.但最终不应该那么令人惊讶,因为自动化只能走到这么远.所以+1为此.
推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有