Linq To Sql 项目从Beta迁移到RTM要注意那些事项呢?RTM相对beta又做了那些变动呢?本文为你揭开这些问题。这里,我们只谈项目中经常碰到的,其他的略去不写。你若是有疑问,可以回贴问,我再帮你找。最后,放出修正文档。特别感谢伍迷TX的督促。
1,函数名称的改变
在添加,更新和删除实体对象时,本blog中的Linq To Sql进阶系列(三)CUD和Log 一文中所提及的,其函数名更改如下。
| Beta 2 Name | RTM Name |
| Add | InsertOnSubmit |
| AddAll | InsertAllOnSubmit |
| Remove | DeleteOnSubmit |
| RemoveAll | DeleteAllOnSubmit |
We have also changed the members of ChangeSet to match these new names:
| Beta 2 Name | RTM Name |
| AddedEntities | Inserts |
| RemovedEntities | Deletes |
| ModifiedEntities | Updates |
2, dbml编码
以前是16,现在是8。因为这个也可能让你的程序编译不过。
<?xml version="1.0" encoding="utf-8"?>
3,一个叫DataSetExtensions的Assembly去掉
这个好像只在asp.net的程序里才会有这个问题,在你的web.config里,如果有这个问题,去掉这段。这个assembly早就没有了。
<add assembly="System.Data.DataSetExtensions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
4, Attach函数的改变
Attach函数用来在不同的datacontext间,传递实体对象。现在这里做了更改。
The solution is add db.DeferredLoadingEnabled = false; to the code to void deferred loading in the first datacontext.
| Customer c = null; Using(DataContext db1 = new DataContext()) { db1.DeferredLoadingEnabled = false; c= db1.Customers.First(); } Using(DataContext db2 = new DataContext()) { db2.Customers.Attach(c); ….do something… } |
5,查询语法中不允许再显示构造实体对象
比如,在beta2中,你可以这么玩,
var q
=
from c
in
db.Customers
where Country
==
"
USA
"

select
new
Customer
{ Name = c.Name, City = c.City }
;
var q
=
from c
in
db.Customers
select
new
Customer
{ City = c.City }
;

foreach
(var item
in
q)
{
Console.WriteLine(item.City);
}
var q
=
from c
in
db.Customers
select
new
{ City = c.City }
;

foreach
(var item
in
q)
{
Console.WriteLine(item.City);
}
6,delete时的改变
在beta2中,如果,你移除从某一表中移除一个实体对象,你须手动从该实体对象的 EntitySet s 移除实体,并遵从1:1的关系。(beta2被我卸了,我也不记得 Dinesh Kulkarni说是什么情况了。)
7, vb中 String = Nothing and String <> Nothing fixes
这个就是“ 随风流月”提到的bug,现在修复了。
8,OR Desinger的改变
首先,在beta2中,在手工编辑dbml产生的代码中,常丢失datacontext类的不带参数的构造函数,这个bug已经修复了。然后,dbml文件中也不再保存数据库的密码。
9,xml类型的映射
beta2中,影射为XDocuments,现在更改为XElement
其他的改变也有,但是好像和我们的关系不大了。如果,你还碰到了新的问题,可以拿出来,我们大家讨论。 更多参考 Dinesh Kulkarni的文档
本文详细介绍LinqToSql从Beta版升级到RTM正式版过程中需要注意的关键变更,包括函数名称调整、dbml编码变化、Attach函数使用更新等,帮助开发者顺利过渡。
5853

被折叠的 条评论
为什么被折叠?



