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

LINQ有许多值得学习的当地,这儿咱们首要介绍LINQ to SQL数据表,包含介绍LINQ to ACCESS的运用等方面。

LINQ to SQL数据表介绍(LINQ SQL)  SQL数据表 第1张

在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. publicpartialclassdbgame
  2. {
  3. publicIQueryable<TEntity>Find<TEntity>(TEntityobj)whereTEntity:class
  4. {
  5. //取得一切property的信息
  6. PropertyInfo[]properties=obj.GetType().
    GetProperties(BindingFlags.Public|BindingFlags.Instance);
  7. //结构初始的query
  8. IQueryable<TEntity>query=this.GetTable<TEntity>().AsQueryable<TEntity>();
  9. //遍历每个property
  10. foreach(PropertyInfopinproperties)
  11. {
  12. if(p!=null)
  13. {
  14. Typet=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. {
  25. }

【修改引荐】

  1. Linq To SQL输出SQL句子分析
  2. LINQ查询的意图与完成手法
  3. LINQ from子句进行复合查询完成办法
  4. LINQ查询表达式功用详解
  5. LINQ根底概念总结
转载请说明出处
知优网 » LINQ to SQL数据表介绍(LINQ to SQL)

发表评论

您需要后才能发表评论