目前我们做数据库迁移,是运用Codefirst的自动映射加上表表数据导入。但是对于视图 和存储过程需要每次到处脚本,到新的数据库去执行,感觉太麻烦,Ef是否支持对试图和存储过程的创建呢?这样做到完全的不依赖于数据库,实现完全的自动化迁移。
目前,EF对存储过程的支持并不完善。存在以下问题:
l EF不支持存储过程返回多表联合查询的结果集。
l EF仅支持返回返回某个表的全部字段,以便转换成对应的实体。无法支持返回部分字段的情况。
l 虽然可以正常导入返回标量值的存储过程,但是却没有为我们自动生成相应的实体.cs代码,我们还是无法在代码中直接调用或使用标量存储过程
l EF不能直接支持存储过程中Output类型的参数。
l 其他一些问题。
其实Ef的SqlQuery〈T〉可以把存储过程以sql语句的形式执行,可以把查询字段与T一一映射,也可以得到output参数。
CodeFirst是一个不负责任的设计.
似乎在简化程序员的工作.
但对整个项目的维护工作变迁问题,其实是不利的.
这个不用我说,你自己知道.何况EF对sqlserver支持有好,其他不是很完美.
EF的实战性不强.性能有隐患.
传统的模式:数据库建模-->生成数据库.这是可行的.何必用codefirst?
Ef的三套映射机制中,目前最灵活,最可取的还是CodeFirst ,它的条件解析所带来的方便快捷开发可以说是其他Orm框架所没有的。至于维护来说,相对于Nh还是便捷多了。我没研究兄台的Orm,但是自己以前写过Orm框架,优化到最后还是避免不了sql 拼条件,对于复杂的操作还是个麻烦,总之,其他Orm所有的的功能和特点,ef都支持,所以企业级开发,中小型项目还是不错的选择。