linq to sql =>; ADO.NET Entity Framework
2008-08-13 21:33 无常 阅读(2246) 评论(5) 编辑 收藏 举报花了一天的时间把项目从linq2sql转到ADO.NET Entity Framework。
此项目bs部分工程量不算多,复杂的功能都做在cs部分上,bs只负责基础数据的维护和报表统计,
其实用linq2sql也可以满足了,但是linq2sql designer用得实在太不爽了,表少的时候还能应付,现在表增加到70几个了,找个表得找半天,linq2sql desinger也不提供个搜索功能:(
前天装好vs2008sp1,试了一下EF designer,增加了Overview窗口和Model browser,就为了这个也要换到EF
转换过程还算顺利,
1.把代码中linq2sql的DataContext换成EF的ObjectContext,这步可以用find/replace完成大部分工作
2.linq2sql创建新记录时是用DataContext.表名s.InsertOnSubmint(obj),而ef是ObjectContext.AddTo表名(object),提交变更也从DataContext.SubmitChange()改成Object.SaveChanges()
3. DataContext.表名s => ObjectContext.表名,这部分可以replace完成
4.aspx文件中用到的LinqDataSource全部得换成EntitiDataSource,这里只有手工一个一个替换了,没法偷懒。LinqDataSource的查询条件需要手工换成Entity SQL,这部分工作是大头~ 还得学一下Entity SQL。
5.如果linq2sql代码用到[].Contains(xx)运算的,参考一下这里的方法解决
6.如果linq2sql中访问数据库时有嵌套访问数据库的,如下面这段代码,在linq2sql中没问题。
如果按流程转到EF的话,就会遇到异常
这是因为EF中foreach读取数据时是采用DataReader在线读取方式,而linq2sql则是采取类似DataSet的先把所有数据从数据库中取出到内存的方式,
所以在EF中需要把外层循环改成
foreach (var depart in ctx.Department.ToList() )
转移工作基本就这些了
接下来要实下EntitySQL了~