Code First 是一个糟糕的名字

很多人依据它的名字认为,它是在代码定义模型,然后从模型生成数据库。

Code First 不是相对 Database First 和Dodel First的第三种方式,而是一种可以替代EDMX文件格式的方案。

从概念上讲,Code First 同时支持Database First和Model First工作方式。这的确让人感到混乱,我们取错了名字。 或许叫它“基于代码建模(code-base modeling)”会更清晰些。

放弃 EDMX,但继续实行数据库优先

实体框架当前使用两种方法来描述模型。一种使用设计器中的 EDMX;另一种涉及类,即代码优先 API 使用的 DbContext 和映射。

可以从数据库开始来获取代码优先模型。可以通过 2011 年初首次发布的 EF Power Tools Beta 来实现这一目的。该工具受 EF6.1 设计器支持,且肯定也会受 EF7 支持。我已多次提到“代码优先”这一名称有一些迷惑性和误导性。最初它称为“仅限代码”,后来这一名称改为“代码优先”以完美匹配“数据库优先”和“模型优先”。

因此,要从现有数据库开始,您无需设计器或 EDMX。

但是,如果您拥有现有 EDMX 模型,并且不想失去使用设计器的能力,会怎样呢?有一些第三方设计器支持实体框架,例如早已支持 EF 代码优先的 LLBLGen Pro Designer (bit.ly/11OLlN2) 以及 Devart Entity Developer (bit.ly/1yHWbB2)。查找可能提供支持 EF7 的设计器的工具以及其他可能的软件。

这些年来,一直不知道Code Fisrt的真实意义。的更多相关文章

  1. 简单Demo 使用Code Fisrt步骤

    使用Code Fisrt步骤 1.开启VS,创建控制台项目:CodeFirstDemo1 2.利用NuGet引进 Entity Framework类库          图住:右击项目名称,在弹出的选 ...

  2. ADO.NET Entity Framework -Code Fisrt 开篇(一)

    ADO.NET Entity Framework -Code Fisrt 开篇(一) 2012-12-25 15:13 by 易code, 911 阅读, 0 评论, 收藏, 编辑 ADO.NET E ...

  3. MYSQL ERROR CODE 错误编号的意义

    mysql error code(备忘) 转1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败 1008:数据库不存在,删除数据库失败 1009:不能删除数据库文件 ...

  4. Code First is a bad name,这些年我们对Code First的理解都错了 !很震惊吧?

    当看到这个时,我也很震惊.估计绝大多数的人和我一样,这些年来,一直不知道Code Fisrt的真实意义.下面是一篇讲述此情况的译文,欢迎围观,若有翻译不当的地方,请指正,谢谢.如果被惊到了,请点赞!, ...

  5. [EF]vs15+ef6+mysql code first方式

    写在前面 前面有篇文章,尝试了db first方式,但不知道是什么原因一直没有成功,到最后也没解决,今天就尝试下code first的方式. [EF]vs15+ef6+mysql这个问题,你遇到过么? ...

  6. [转载]Python 3.5 协程究竟是个啥

    http://blog.rainy.im/2016/03/10/how-the-heck-does-async-await-work-in-python-3-5/ [译] Python 3.5 协程究 ...

  7. [译] Python 3.5 协程究竟是个啥

    转自:http://blog.rainy.im/2016/03/10/how-the-heck-does-async-await-work-in-python-3-5/ [译] Python 3.5 ...

  8. 【转】单例模式(python/c++)

    1. 什么是单例模式(Singleton pattern)? 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易 ...

  9. javascript 中的数据驱动页面模式

    前段时间一直在想前端MVC的意义.这个话题仁者见仁,但是MVC的使用方法给我提了一个管理数据的有意思的想法--数据管理和数据驱动页面.我们以前的思路一直是事件驱动页面,事件驱动页面合乎逻辑而且节约代码 ...

随机推荐

  1. JVM参数调优总结

    一.前言 要想成为一名高级Java开发具备JVM调优的能力必不可少,能够根据项目实际情况进行JVM调优的前提是理解JVM原理和常用JVM参数的含义及作用,虽然<深入理解Java虚拟机>这本 ...

  2. pydub "Couldn't find ffmpeg or avconv - defaulting to ffmpeg" 问题解决

    我通过 命令行安装了pydub库,运行报了如下错误 RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but ...

  3. golang unsafe.Pointer与uintptr

    原文地址:https://blog.fanscore.cn/p/33/ 先说结论 uintptr 是一个地址数值,它不是指针,与地址上的对象没有引用关系,垃圾回收器不会因为有一个uintptr类型的值 ...

  4. 【ASP.NET Core】Blazor 服务器端的 Base Path

    提到 Blazor,没准就会有人问:选用 Server 端还是 WebAssembly(客户端)?其实这个不用纠结,老周个人的原则是:Server 端优先.理由很单纯:服务器端虽然消耗服务器上的资源, ...

  5. JAVA_基础IO流随机存取文件流(四)

    随机存取文件流 RandomAccessFile 声明在java.io包下,但直接继承于java.lang.Object类.并 且它实现了DataInput.DataOutput这两个接口,也就意味着 ...

  6. java的多线程:线程安全问题

    什么是线程安全? 为什么有线程安全问题? 当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题.但是做读操作是不会发生数据冲突问题. 抢火车的例子: ...

  7. 在php里做js操作

    'echo <script>js_operation</script>';

  8. 辅助调用函数【call,apply,bind】

    函数也是对象,每个函数都有自己的方法. e.g. var jane = { name:'Jane', sayHelloTo:function(name) { 'use strict'; console ...

  9. Lagom 官方文档之随手记

    引言 Lagom是出品Akka的Lightbend公司推出的一个微服务框架,目前最新版本为1.6.2.Lagom一词出自瑞典语,意为"适量". https://www.lagomf ...

  10. Docker-ce运用一:创建虚拟机

    1.从远程仓库查看所需镜像 [root@localhost docker]# docker search centos8 NAME                                 DE ...