Code First, Database First, Same Time区别
Code First, Database First, Same Time是我理解的asp.net mvc中用到的三种model与数据库对应的方式,肯定是不全面的,理解也有些狭隘,今后随着自己的理解加深再来修改这篇帖子吧。这三种方式在 (www.helpqy.com)中有应用,这里来自我总结一下:
【Code First】
即先写好模型类,然后通过EF自动生成数据库及相应的表。使用MVC自动创建的模板页时,实际上就使用了Code First。当你打开新建工程的时候可以看到,是没有数据库存在的,当你在运行的页面中注册新账号时,系统会自动根据web.config中的配置、ApplicationDbContext中设置的连接字符串以及模型类来生成数据库和表。至于具体怎么生成的,在我的另外一篇帖子里【将SQL SERVER数据库改成MySql】有具体的实现代码,实际上是通过数据库的Initilizer类来创建数据库的。
通过这种方式创建的数据库,在模型类中的成员被修改后,还可以通过VS的"程序包管理器控制台"来同步到数据库,只需要采用数据迁移中的Enable-Migrations, Add-Migrations "XXX"和Update-Database三个步骤即可实现数据库和模型类的同步。
【Database First】
即先创建好数据库和表,然后新建ADO.NET实体数据模型文件edmx,根据VS的引导,选择已经创建好的数据库的某一个表作为数据源,模型类会被自动创建出来。
【Same Time】
Same Time 是我自己想出的词儿,很不专业,就是自己的一个总结。即在代码侧,模型中的ApplicationUser已经创建好了,想另外增加其它的类以及在已有数据库中创建对应的表,这时需要注意一下几点:
(1) 在类的顶部加上[Table('"xxxx表名")]以让该类与表相关。
(2) 在主键字段前面加上[Key]属性。
(3) 如果表中存在多个主键,在主键上除开添加[Key]属性以外,还需要添加[Column(Order = XX列号)]属性,以表明不同主键的顺序。否则会出现“无法确定组合主键排序”的错误。
(4) 新增加的类可以不用放在ApplicationDbContext中,可以创建DataContext来建立Context模型,然后通过linq to sql来访问,但是在实际部署时,这种方式会出现访问冲突错误,因此还是建议在ApplicationDbContext中,定义该新建模型类的DbSet,然后通过ApplicationDbContext这个统一的入口来访问。
最新文章
- Adapter 代码中启动报错
- 修改maven默认的JDK编译版本
- NSoperation用法详解及与GCD的比较
- 【译】Java中的可变参数
- ASP.NET MVC3更新出错:ObjectStateManager中已存在具有同一键的对象
- 夺命雷公狗---微信开发56----微信js-sdk接口开发(3)所有接口功能
- Python常用内建模块
- 项目经验之:MVVM初学者图形化笔记整理。。。
- jquery div拖动效果示例代码
- leetcode344——Reverse String(C++)
- 设计模式之 - 模板模式(Template Pattern)
- 搭建centos7的开发环境2-单机版Hadoop2.7.3配置
- HTTP 403 ,tomcat配置HTTPS,无法访问 返回状态码HTTP 403
- zookeeper名字服务
- iOS:练习题中如何用技术去实现一个连线题
- Shell标准输出、标准错误
- Blender 精确建模3D打印注意事项
- ipv6地址累加函数
- win10无法访问别的机器的共享目录
- 【poj3718】 Facer's Chocolate Dream