溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

LINQ to SQL數(shù)據(jù)表怎么用

發(fā)布時(shí)間:2021-12-01 10:14:12 來源:億速云 閱讀:208 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“LINQ to SQL數(shù)據(jù)表怎么用”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“LINQ to SQL數(shù)據(jù)表怎么用”這篇文章吧。

在LINQ to SQL數(shù)據(jù)表里面都是用的DbConnection,而不是SQLConnection,這樣的話理論上可以支持所有的數(shù)據(jù),但對于一些數(shù)據(jù)庫的支持可能不是太好。例如分頁,SQL Server 2000,SQL Server 2005,SQL Server 2008數(shù)據(jù),使用LINQ的代碼都不一樣,而ACCESS和SQL Server 2000比較接近,就可以直接使用SQL Server 2000Provider。查了一些資料看到,理論有那個(gè)數(shù)據(jù)庫provider,就可以支持這種數(shù)據(jù)庫。也看了dbLINQ 0.8支持不同數(shù)據(jù)庫的源碼,但自己能力有限不能寫一個(gè)ACCESS的,還是用官方的吧。下邊說一下方法。

其實(shí)他不太麻煩,只是改一下,*.designer.cs文件里的代碼。因?yàn)锳CCESS 不支持dbo,而LINQ to SQL數(shù)據(jù)表前面都有dbo.的前綴, [Table(Name="dbo.wjk3")],將dbo.去掉,不然的話,會提示你找不到dbo數(shù)據(jù)庫,這點(diǎn)上,自己走了不少彎路。在public partial class DDataContext: System.Data.LINQ.DataContext上邊加上, [Provider(typeof(System.Data.LINQ.SQLClient.SQL Server 2000Provider))]設(shè)定為SQL Server 2000Provider,不然的話 LINQ 里面的first 不能使用,另外分頁也不能使用,因?yàn)樗J(rèn)的是SQL Server 2008Provider。

這一點(diǎn)很重要,到現(xiàn)在為止,基本上解決LINQ to ACCESS的使用,但還有一點(diǎn)問題,從數(shù)據(jù)庫讀取一條記錄,修改后使用SubmitChanges()更新,提示錯(cuò)誤,不能修改,錯(cuò)誤內(nèi)容:找不到行或行已更改。這一點(diǎn)可以使用一些自定義方法來實(shí)現(xiàn)更新,使用ExecuteCommand()直接執(zhí)行更新SQL語句來實(shí)現(xiàn)。感覺LINQ to SQL數(shù)據(jù)表的跟蹤,如果不適用SubmitChanges()更新的話,跟蹤也每太大的意義,實(shí)現(xiàn)跟蹤可能會降低系能,另外添加,刪除也依賴跟蹤,如果不使用跟蹤的話,還要擴(kuò)展添加,刪除的方法。

  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. //構(gòu)造初始的query  

  8. IQueryable<TEntity> query = this.GetTable<TEntity>().AsQueryable<TEntity> ();  

  9. //遍歷每個(gè)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數(shù)據(jù)表怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI