LINQtoSQL数据表介绍

LINQ有很多值得学习的地方,这里我们主要介绍LINQ to SQL数据表,包括介绍LINQ to ACCESS的使用等方面。

创新互联建站是网站建设技术企业,为成都企业提供专业的网站设计制作、成都网站制作,网站设计,网站制作,网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制适合企业的网站。十余年品质,值得信赖!

在LINQ to SQL数据表里面都是用的DbConnection,而不是SQLConnection,这样的话理论上可以支持所有的数据,但对于一些数据库的支持可能不是太好。例如分页,SQL Server 2000,SQL Server 2005,SQL Server 2008数据,使用LINQ的代码都不一样,而ACCESS和SQL Server 2000比较接近,就可以直接使用SQL Server 2000Provider。查了一些资料看到,理论有那个数据库provider,就可以支持这种数据库。也看了dbLINQ 0.8支持不同数据库的源码,但自己能力有限不能写一个ACCESS的,还是用官方的吧。下边说一下方法。

其实他不太麻烦,只是改一下,*.designer.cs文件里的代码。因为ACCESS 不支持dbo,而LINQ to SQL数据表前面都有dbo.的前缀, [Table(Name="dbo.wjk3")],将dbo.去掉,不然的话,会提示你找不到dbo数据库,这点上,自己走了不少弯路。在public partial class DDataContext: System.Data.LINQ.DataContext上边加上, [Provider(typeof(System.Data.LINQ.SQLClient.SQL Server 2000Provider))]设定为SQL Server 2000Provider,不然的话 LINQ 里面的first 不能使用,另外分页也不能使用,因为他默认的是SQL Server 2008Provider。

这一点很重要,到现在为止,基本上解决LINQ to ACCESS的使用,但还有一点问题,从数据库读取一条记录,修改后使用SubmitChanges()更新,提示错误,不能修改,错误内容:找不到行或行已更改。这一点可以使用一些自定义方法来实现更新,使用ExecuteCommand()直接执行更新SQL语句来实现。感觉LINQ to SQL数据表的跟踪,如果不适用SubmitChanges()更新的话,跟踪也每太大的意义,实现跟踪可能会降低系能,另外添加,删除也依赖跟踪,如果不使用跟踪的话,还要扩展添加,删除的方法。

 
 
 
  1. public partial class dbgame  
  2. {  
  3. public IQueryable Find(TEntity obj) where TEntity : class  
  4. {  
  5. //获得所有property的信息  
  6. PropertyInfo[] properties = obj.GetType().
    GetProperties(BindingFlags.Public | BindingFlags.Instance);  
  7. //构造初始的query  
  8. IQueryable query = this.GetTable().AsQueryable ();  
  9. //遍历每个property  
  10. foreach (PropertyInfo p in properties)  
  11. {  
  12. if (p != null)  
  13. {  
  14. Type t = p.PropertyType;  
  15. //加入object,Binary,和XDocument,支持sql_variant,imager 和xml等的影射。  
  16. if (t.IsValueType || t == typeof(string) || t == typeof(System.Byte[])  
  17. || t == typeof(object) || t == typeof(System.Xml.Linq.XDocument)  
  18. || t == typeof(System.Data.Linq.Binary))  
  19. {  
  20. //如果不为null才算做条件  
  21. if (p.GetValue(obj, null) != null)  
  22. {  
  23. if (((ColumnAttribute)(p.GetCustomAttributes(typeof(ColumnAttribute), 
    true)[0])).IsPrimaryKey && Convert.ToInt32(p.GetValue(obj, null)) == 0)  
  24. {  

分享文章:LINQtoSQL数据表介绍
文章来源:http://www.shufengxianlan.com/qtweb/news17/520367.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联