文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

LINQ to SQL数据表怎么用

2023-06-17 22:18

关注

这篇文章主要为大家展示了“LINQ to SQL数据表怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“LINQ to SQL数据表怎么用”这篇文章吧。

在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<TEntity> Find<TEntity>(TEntity obj) where TEntity : 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 (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. {  

以上是“LINQ to SQL数据表怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯