http://kb.cnblogs.com/a/1507175/
通过上一篇得到的问题:linq to access是不是网站开发中所需要的?是不是采用第三方的类库来实现linq to access例如alinq,dblinq,iqtoolkit等?是否可以采用自己的方式来扩展linq 的方法?是否必须采用linq的跟踪方式?
自己的答案:linq to access 不仅是为了节省sql空间,另外也是为了简单网站的开发,如一般的企业站,根据就不需要sql数据库,access简单,容易备份。现在仍有很多的网站是采用access来做数据库的,特别是asp开发的网站,基本以access为主,access仍可以是我们开发中需要选择的数据库之一。采用linq to access 的方式,不仅可以访问access数据库而且之需要改一下数据库的连接字符串就可以无缝实现linq to sql。这样可根据自己网站的情况来选择自己所要使用的数据库。这种方式实现的方法也比较简单,只是根据linq to sql 生成的代码文件 *.designer.cs 里稍微的改几处,就可以完美的实现,如果你会linq ,就不需要学任何新的东西来为实现linq 使用 access数据库。现在也有其他的实现linq to access的方式,如alinq,dblinq,iqtoolkit。不过都没有微软官方提供linq to sql使用起来好用。通过对linq to sql的简单修改来实现linq to access,不为是一种好的方式,并且也不会加大学习新类库的时间。 我们也可以通过对生DataContext类的扩展来实现自己处理数据库的方式。如,扩展自己的数据添加、删除、更新的操作。linq to sql 不支持通主键来实现查找,删除,而在现实我们基本上是采用这种的比较多,我们可以扩展这些方法。linq的跟踪是实现SubmitChanges()必须的。如果想写自己的数据库操作,可以不用跟踪,我想这样对性能也有好处。
linq to sql主要修改来实现 linq to access:
1. 在定义 public partial class dbgame : System.Data.Linq.DataContext 上加属性控制Provider,[Provider(typeof(System.Data.Linq.SqlClient.Sql2000Provider))] 来实现默认的为Sql2000Provider。如果不加的话默认的为
Sql2008Provider,不知first()。
2.修改 [Table(Name="dbo.表名")] 修改为[Table(Name="表名")] 去掉dbo.因为access不支持在表前面加dbo.
否则会提示找不到dbo表。
由于使用这种方式 ,SubmitChanges()不能实现数据库的更新,所以必须自己来写更新的方法update<T>(T),他将根据主键来更新被修改过的实体。也希望有高人帮忙指点来实现SubmitChanges()更新数据库。经过简单的测试,其他在linq to sql里能实现的这里基本上也可以。也希望大家能帮忙找找其他关于兼容的问题。 linq to access demo源码下载。
讨论:linq使用access数据怎样能实现SubmitChanges() 更新数据库方法,linq 使用access能否在小型项目中使用,能不能使用更好的方式来实现linq to access。