实体框架 (EF) 入门 => 一、我该用哪个工作流?
入门的参考资料:http://msdn.microsoft.com/zh-cn/data/ee712907
本篇的参考资料:http://msdn.microsoft.com/zh-cn/data/jj590134
教程说的很明白,虽然听不太懂,不过也能看懂
我该用哪个工作流?换句话说,也就是使用EF有哪几种方式,哪种方式更适合你,更适合你当前要开发的项目。
一、该不该使用EF
这个问题很复杂,个人认为,大中型项目,不宜使用EF。
中小型项目,可以使用EF。
二、使用EF的三种方式
1、Database First:
数据库优先,就是你先建好数据库,然后再根据数据库生成Model。
这种方式唯一的缺点就是需要你去建实体对象的partial类,在partial类中设置特性等。
感觉还是这种方式是最好的,只是没有CodeFirst新潮啊,所以啊,很难留住那些花心的男人。
2、Code First:
代码优先,就是先建立实体类,然后根据实体类生成数据库。
这种方式不需要partial类,你在写实体类的时候,顺便也会把特性写上。
这种方式使用起来也不像微软说的那样容易,你既要懂数据库,又要懂Code First的各种约定、技巧,个人感觉比 Database First 入门更难。并且,操作不当的话,很有可能带来灾难性的后果,因为你一个错误的代码,就有可能导致数据库暴动。
3、Model First:
不想学这个,不男不女的。
三、你该选择哪种方式:
- 如前面所说,大中型项目,你就不该使用EF。(有些人要说,大中型项目,你都不该使用.net,嘿嘿,说吧说吧,言者无罪)
- 如果是中型项目,应该使用 Database First。
- 小型项目,可以使用Code First。当然得是熟练工啊,像我这种菜鸟,只能在这写学习笔记。
四、Code First 的两种方式:
1、在原有数据库上使用 Code First。这没有什么好说的,我前面已经学过了,不是全新的数据库,就得使用这种方式。
2、在新数据库上使用 Code First。如果是全新的项目,当然要使用这种方式。不过一般很少会出现这种情况,你至少要把一些基本的东东弄进去吧,比如用户、权限、日志等,可能还要使用其它数据库中的数据,所以,全新的,很难找啊,除非去幼儿园。