问题描述
LinqToSql项目从Beta迁移到RTM要注意那些事项呢?RTM相对beta又做了那些变动呢?本文为你揭开这些问题。这里,我们只谈项目中经常碰到的,其他的略去不写。你若是有疑问,可以回贴问,我再帮你找。最后,放出修正文档。特别感谢伍迷TX的督促。1,函数名称的改变在添加,更新和删除实体对象时,本blog中的LinqToSql进阶系列(三)CUD和Log一文中所提及的,其函数名更改如下。Beta2NameRTMNameAddInsertOnSubmitAddAllInsertAllOnSubmitRemoveDeleteOnSubmitRemoveAllDeleteAllOnSubmit还有其他函数名称的改变,但是,好像本blog从来都没有提过,所以,不做太多说明。WehavealsochangedthemembersofChangeSettomatchthesenewnames:Beta2NameRTMNameAddedEntitiesInsertsRemovedEntitiesDeletesModifiedEntitiesUpdates2,dbml编码以前是16,现在是8。因为这个也可能让你的程序编译不过。<?xmlversion="1.0"encoding="utf-8"?>3,一个叫DataSetExtensions的Assembly去掉这个好像只在asp.net的程序里才会有这个问题,在你的web.config里,如果有这个问题,去掉这段。这个assembly早就没有了。<addassembly="System.Data.DataSetExtensions,Version=2.0.0.0,Culture=neutral,PublicKeyToken=B77A5C561934E089"/>4,Attach函数的改变Attach函数用来在不同的datacontext间,传递实体对象。现在这里做了更改。Thesolutionisadddb.DeferredLoadingEnabled=false;tothecodetovoiddeferredloadinginthefirstdatacontext.Customerc=null;Using(DataContextdb1=newDataContext()){db1.DeferredLoadingEnabled=false;c=db1.Customers.First();}Using(DataContextdb2=newDataContext()){db2.Customers.Attach(c);….dosomething…}5,查询语法中不允许再显示构造实体对象比如,在beta2中,你可以这么玩,varq=fromcindb.CustomerswhereCountry=="USA"selectnewCustomer{Name=c.Name,City=c.City};现在,这么玩就会在run-time时抛异常。这个地方的修改是因为一个bug引起的。在beta2中,下面的代码varq=fromcindb.CustomersselectnewCustomer{City=c.City};foreach(variteminq){Console.WriteLine(item.City);}你得到的结果全是Aachen,虽然结果数目是对了,但是全是第一条纪录的值.如果换做匿名类varq=fromcindb.Customersselectnew{City=c.City};foreach(variteminq){Console.WriteLine(item.City);}则结果又正确了。为了修复这个问题,在查询语句中,显示构造实体对象将抛异常。如果在查询语句中,显示构造的对象不是实体类的话,即没有table属性,那么又不会有异常。这里只所以会做这样的变动是考虑了更新的问题,如果,你显示构造实体对象时,不选主键,而你又要求更新,linqtosql怎么帮你做呢?我稍候提供的文档将解释的很详细,不多言。6,delete时的改变在beta2中,如果,你移除从某一表中移除一个实体对象,你须手动从该实体对象的EntitySets移除实体,并遵从1:1的关系。(beta2被我卸了,我也不记得DineshKulkarni说是什么情况了。)7,vb中String=NothingandString<>Nothingfixes这个就是“随风流月”提到的bug,现在修复了。8,ORDesinger的改变首先,在beta2中,在手工编辑dbml产生的代码中,常丢失datacontext类的不带参数的构造函数,这个bug已经修复了。然后,dbml文件中也不再保存数据库的密码。9,xml类型的映射beta2中,影射为XDocuments,现在更改为XElement转自:http://www.cnblogs.com/126/archive/2007/11/28/976006.html
解决方案
解决方案二:
该回复于2008-01-28 11:09:24被版主删除
解决方案三:
学习!
解决方案四:
顶活到老,学到死......