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这个统一的入口来访问。

最新文章

  1. Adapter 代码中启动报错
  2. 修改maven默认的JDK编译版本
  3. NSoperation用法详解及与GCD的比较
  4. 【译】Java中的可变参数
  5. ASP.NET MVC3更新出错:ObjectStateManager中已存在具有同一键的对象
  6. 夺命雷公狗---微信开发56----微信js-sdk接口开发(3)所有接口功能
  7. Python常用内建模块
  8. 项目经验之:MVVM初学者图形化笔记整理。。。
  9. jquery div拖动效果示例代码
  10. leetcode344——Reverse String(C++)
  11. 设计模式之 - 模板模式(Template Pattern)
  12. 搭建centos7的开发环境2-单机版Hadoop2.7.3配置
  13. HTTP 403 ,tomcat配置HTTPS,无法访问 返回状态码HTTP 403
  14. zookeeper名字服务
  15. iOS:练习题中如何用技术去实现一个连线题
  16. Shell标准输出、标准错误
  17. Blender 精确建模3D打印注意事项
  18. ipv6地址累加函数
  19. win10无法访问别的机器的共享目录
  20. 【poj3718】 Facer's Chocolate Dream

热门文章

  1. execl 导出
  2. ES版本控制
  3. CI
  4. scikit-FEM-mesh
  5. 聊聊如何设计千万级吞吐量的.Net Core网络通信!
  6. Redis常见使用说明
  7. [Ynoi2019模拟赛]Yuno loves sqrt technology II(二次离线莫队)
  8. IPv6 Can't assign requested address
  9. Java计数器之CountDownLatch、CyclicBarrier、Semaphore
  10. WINDOWS平台下的栈溢出攻击从0到1(篇幅略长但非常值得一看)