我是Entity Framework 6 Code First的新手,我正在尝试执行我认为简单的任务.我想创建一个SQL视图,然后在我的数据库上下文中有一个Entity,我可以使用它来查询视图.我曾尝试过像this这样的文章,但我的情况的主要区别在...
我是Entity Framework 6 Code First的新手,我正在尝试执行我认为简单的任务.我想创建一个SQL视图,然后在我的数据库上下文中有一个Entity,我可以使用它来查询视图.
我曾尝试过像this这样的文章,但我的情况的主要区别在于SQL View不是来自另一个现有数据库的现有视图.
我检查了this article中提出的命题,但对我来说似乎有点过分,我需要创建一些扩展方法来做一些简单的事情,比如创建一个视图/实体组合并在我的数据库上下文中使用它.
我错过了什么吗?我知道如果我不使用Code First会更容易,但请记住它是Code First,我正在尝试创建一个视图,而不是重用现有数据库中的视图.
解决方法:
科林和凯文,感谢您在另一篇文章中找到答案的链接和简明的答案.我已经使用了几个资源来最终基于新的SQL视图创建可查询实体.为了防止其他人对EF 6.0 Code First不熟悉并且刚刚开始行动,我确实会采取一些措施,希望将来能够让其他人受益.
>对于经验丰富的实体框架开发人员来说,这似乎是显而易见的,但是为了执行“迁移”方法,您需要禁用自动迁移,并实际深入了解Code First Migrations内部工作的内容.由于自动迁移是开箱即用的,我已经使用种子脚本创建了一个相当复杂的数据库,所有这些都依赖于自动迁移并在每次运行我的应用程序时重建数据库. This post帮助我擦除了我的迁移历史,并在关闭自动迁移的情况下进入了方块1(我使用了web.config方法以防万一你想知道)
>在我清除了迁移信息后,我从解决方案资源管理器中删除了mdf.这保证了在运行Update-Database时不会遇到任何问题(在步骤列表的下方).
>在Package Manger控制台中,我然后执行Add-Migration Initial以生成“初始”迁移.结果是Colin的答案中描述的可编辑的Up和Down方法.然后,我通过注释掉表创建语句(实体框架尝试创建一个表但我们真的想要创建一个视图并将其映射到实体)并插入我自己的视图创建sql语句,然后按照科林的答案中的步骤进行操作. Up方法.在创建可能依赖的任何表之后放置create语句非常重要.我还在Configuration.Seed方法中执行了Seed活动,而不是在Context的Seed方法中.我知道如果您处理多个迁移,这将是多么重要.最后,正如Colin建议我将表映射添加到我的上下文的OnModelCreating事件中.
>最后一步是将迁移实际应用于数据库.为此,请在程序包管理器控制台中执行Update-Database命令.该语句将使用您在先前步骤中创建和编辑的“初始”迁移重建数据库.
我仍然感到惊讶的是,我需要完成所有这些自定义工作来创建视图并将其映射到具有Code First的实体,但在一天结束时,它有助于我开始迁移,因为您只能依赖无论如何,“自动迁移”已经很久了.
本文标题为:c# – 使用Entity Framework 6 Code First创建SQL视图
基础教程推荐
- C#中的TemplateMethod模式问题分析 2023-02-17
- C#面向对象设计原则之组合/聚合复用原则 2023-05-25
- Netcore Webapi返回数据的三种方式示例 2023-07-04
- C# 列表List的常用属性和方法介绍 2023-04-10
- WPF使用Dragablz构建可拖拽分离的Tab页程序 2023-06-21
- 基于WPF实现简单的下拉筛选控件 2023-07-18
- WPF使用DrawingContext实现二维绘图 2023-06-21
- WPF实现动画效果(五)之关键帧动画 2023-06-20
- C#表达式中的动态查询详解【译】 2023-03-28
- C#实现鼠标消息捕获 2023-05-22