LINQ to SQL数据表介绍

开发 后端
这里介绍在LINQ to SQL数据表里面都是用的DbConnection,而不是SQLConnection,这样的话理论上可以支持所有的数据,但对于一些数据库的支持可能不是太好。

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()更新的话,跟踪也每太大的意义,实现跟踪可能会降低系能,另外添加,删除也依赖跟踪,如果不使用跟踪的话,还要扩展添加,删除的方法。

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

【编辑推荐】

  1. Linq To SQL输出SQL语句剖析
  2. LINQ查询的目的与实现手段
  3. LINQ from子句进行复合查询实现方法
  4. LINQ查询表达式功能详解
  5. LINQ基础概念总结
责任编辑:佚名 来源: 51CTO.com
相关推荐

2009-09-09 11:24:13

Linq使用数据表

2009-09-11 09:41:19

LINQ to SQL

2009-09-08 13:07:15

介绍Linq to S

2009-09-15 17:07:24

Linq To SQL

2010-07-16 09:06:51

SQL Server数

2010-07-22 10:30:36

SQL Server数

2009-09-18 14:07:51

LINQ to SQL

2009-09-18 15:19:19

LINQ to SQL

2010-06-18 11:04:39

SQL Server

2010-11-22 13:53:46

MySQL数据表

2009-09-18 09:25:06

LINQ Framew

2009-09-09 14:20:49

LINQ To Luc

2009-09-16 10:38:43

LINQ查询

2009-09-10 17:30:15

LINQ Where子

2009-09-08 10:50:20

2009-08-13 11:01:32

LINQPadLINQ工具

2010-08-04 09:55:34

LINQ to SQL

2009-09-14 19:20:22

LINQ TO SQL

2020-12-02 14:38:21

SQL数据库MySQL

2011-02-21 13:06:34

SQL Servr 2
点赞
收藏

51CTO技术栈公众号