當 Visual Studio 2005遇上LINQ To SQL

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

Visual Studio 2005遇上LINQ To SQL

 

/黃忠成

 

  前陣子,我發表了VS2005遇上LINQ一文,其實有件事我未告訴各位,不過我想許多人都已經猜到了吧?

  我們既然能在VS 2005中呼叫.NET Framework 3.5LINQ函式,那這也意味著,原來的VS 2005專案,能參考VS 2008所編譯出來的Assembly

  那這有何好處呢?很簡單,你不需要大費周章的在VS 2005中以土法煉鋼來呼叫LINQ函式,只要用Visual Studio 2008 Express版本(這是免費的,當然,你也可以用Visual Studio 2008 Team Suite/Team Developer等版本做到相同的事),將需要的函式寫成Assembly(類別庫),就能在Visual Studio 2005中呼叫該函式,最終得到LINQ的強大火力支援,同時!也保留了LINQ Expression

  就我猜想,會需要用到這種手法的情況有兩種,一種是只有Visual Studio 2005正式版,而沒有Visual Studio 2008付費版本,而又需要LINQ的功能。另一種是擁有舊有Visual Studio 2005專案,為了穩定性或是遷移之不可測性,不希望將整個專案移植到Visual Studio 2008中。

  前面的VS 2005遇上LINQ一文中,已經詳述了如何於VS 2005中使用LINQ,以本文所提及的手法,你不需撰寫那些奇怪的函式呼叫,只要下載Visual Studio 2008 Express版本,就可以在類別庫中使用LINQ,然後在VS 2005專案中參考她們。所以,此處我就不再贅述一般LINQ的用法了,我將焦點放在LINQ To SQL上面。

  首先,請使用Visual Studio 2008 Express來建立一個類別庫,然後加入LINQ To SQL類別項目,詳情可參考前一篇文章。

  接著,於LINQ To SQL設計區中加入Customers資料表,然後新增一個類別檔案,名為NorthwindExt.cs,程式碼如下所示:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace DALLib

{

    partial class NorthwindDataContext

    {

        public List<Customers> GetCustomers()

        {

            return (from s1 in Customers select s1).ToList();

        }

 

        public List<Customers> GetCustomers(int startRowIndex, int maximumRows)

        {

            return (from s1 in Customers

               select s1).Skip(startRowIndex).Take(maximumRows).ToList();

        }

 

        public void UpdateCustomer(Customers old_data, Customers data)

        {

            Customers.Attach(data, old_data);

            SubmitChanges();

        }

 

        public void DeleteCustomer(Customers data)

        {

            Customers.Attach(data);

            Customers.DeleteOnSubmit(data);

            SubmitChanges();

        }

 

        public int GetRecordCount(int startRowIndex, int maximumRows)

        {

            return (from s1 in Customers select s1).Count();

        }

    }

}

這是利用了partial class機制,於原來的LINQ To SQL產生類別中,添加了ObjectDataSource控件會用到的SelectUpdateDelete函式,完成後編譯此類別庫。

接著以Visual Studio 2005建立一新網站,加入前述之類別庫所編譯出來之DLL為參考,於Default.aspx中放入一ObjectDataSource控件,設定其資料來源為DALLib.NorthwindDataContext

設定SELECT Method

設定UPDATE Method

設定DELETE Method

最後設定ObjectDataSourceSelectCountMethodGetRecordCountOldValueParameterFormatStringold_{0}ConflectDetectingCompareAllValuesEnablePagingTrue

然後拖入一個GridView控件,繫結至此ObjectDataSource,啟用編輯 、分頁、刪除等功能,執行後便可見到以下結果。

你可以編輯資料,切頁與刪除資料。

那這究竟有何好處呢?如果你仔細看NorthwindExt.cs中的程式碼,會發現到,我使用了SkipTake函式,而這是SQL Server 2005最有效率的ROW_NUMBER分頁機制,你不須像以前般自行處理分頁,LINQ To SQL已幫你做掉所有的事了,新增、修改、刪除亦是如此。

當然,有一點我們也不能忘記,Visual Studio 2008 Express預設使用的是檔案型SQL Server資料庫,所以若要改用伺服器級別的資料庫,那麼你必須掛載事件至ObjectDataSourceObjectCreating事件,改變其ConnectionString

protected void ObjectDataSource1_ObjectCreating(object sender, ObjectDataSourceEventArgs e)

{

        e.ObjectInstance = new DALLib.NorthwindDataContext(

           "Data Source=JEFFRAY;Initial Catalog=Northwind;Integrated Security=True");

}

 

 Welcome To LINQ To SQL World ^_^

 

 

零基础学习Visual Studio C# 2005编程指南 C#(发音为“看”)是一种由微软开发的面向对象的编程语言,它是由Anders Hejlsberg领导的一个团队设计出来的,最初是为了开发.NET平台。自从2002年首次推出以来,C#已经走过了多个版本,每个版本都引入了新的特性和改进,比如泛型、LINQ、async/await等,使其成为构建各种应用程序的强大工具。开发者可以使用继承的方式来创建自定义控件。通过继承现有的控件类并重写其方法或属性,可以创建出具有特定功能的控件。// 获取图形对象// 绘制一个椭圆作为按钮的背景。 阅读详情

相关推荐

VS2005SQL Server 2005简体中文版的开发与数据库管理宝典

Team Foundation Server(TFS)作为微软提供的一套全面的团队基础项目管理工具,集成了版本控制、工作项跟踪、构建自动化以及项目管理功能。TFS的设计初衷是为软件开发团队提供一个协作的环境,让团队成员能够更加紧密地配合,提高工作效率,同时保证项目的按时交付。TFS的核心功能组件包括:版本控制:提供了集中式的源代码管理解决方案,支持文件级别的版本控制以及分支管理。工作项跟踪:允许团队跟踪任务、需求、缺陷等,有助于项目管理和进度监控。报告和仪表板。

weixin_32869687的博客 1047

VS2005 遇上 LINQ

 當VS2005 遇上 LINQ 文/黃忠成  在【極意之道-次世代 .NET Framework 3.5 資料庫開發聖典】(好長的書名,我該取個匿稱嗎?哈)一書第三章中,有下面這段敘述: 任何支援.NET Framework 2.0的程式語言都能夠叫用LINQ所提供的查詢函式,也就是

黄忠成 1万+

Visual Studio版本互转工具:从2005到2010的项目迁移解决方案

在软件开发的漫长周期中,随着技术的不断进步,开发者时常需要在多个版本的Visual Studio之间进行项目迁移和转换。Visual Studio版本互转工具应运而生,旨在简化不同版本间的迁移流程,减少手动转换中的错误和工作量。版本互转工具基于一套预设的转换规则和算法来分析和修改项目文件,确保在转换过程中,代码的一致性和功能的完整性。它不仅涵盖了文件格式的转换,还包括了对新版本特性的支持和对旧代码的兼容性优化。这一章节为读者搭建了理解和使用Visual Studio版本互转工具的基础框架。

weixin_26854475的博客 1073

VSvisual studio)里没有LINQ to SQL模板

VS中找到工具---获取工具和功能---单个组件---(添加即可)

可上青天揽明月,可下五洋去捉鳖. 1万+

Using LINQ in Visual Studio 2005

Using LINQ in Visual Studio 2005 NOTE:(安装linq时要求安装的是vs的英文版否则将无法识别,还有就是得安装vs2005 sp1,其实个人觉得倒不如直接安装vs2008算了。 LINQ (.Net Language Inte...

didan3807的博客 144

Visual Studio 2008 Express 中的 LINQ To SQL

Visual Studio 2008 Express 中的 LINQ To SQL 文/黃忠成  這幾日剛好有空,心血來潮的下載了Visual Studio 2008 C# Express版本,發現此版本居然也支援了LINQ To SQL,雖然有限制只能使用SQL Server資料庫檔案作為資料來源,不能直接於IDE中連結SQL Server伺服器,不過這並不是問題,我們只要從欲連

黄忠成 2130

Visual Studio 2008中的LINQ

今天在翻《日经软件》,里面附有一张赠送的“Visual Studio 2008 Team System 2008 Beta2”的安装盘,不禁感慨,Visual Studio 2003还没有玩熟,Visual Studio 2005都还没有怎么摸过,Visual Studio 2008都已经快出来了。网上找了找Visual Studio 2008相关的内容,毕竟还没有上市,不是特别多

fatfox的专栏 780

vs2010 mysql linq to sql 系列,无法添加LINQ to SQL类在VS2010项目

I just ran into something in Visual Studio 2010 RC that wasn't previously happening (like, yesterday). No software changes here, but I did run into some muck yesterday when compiling that required a ...

weixin_39641738的博客 175

如何:在 Visual Studio 中创建 LINQ to Entities 项目

不同类型的语言集成查询 (LINQ) 项目需要某些导入的命名空间 (Visual Basic) 或 using 指令 (C#) 和引用。最低要求是对 System.Core.dll 和 System.Data.Entity.dll 的引用,以及用于 System.LinqSystem.Data.Objects 命名空间的 using 指令。LINQ to Entities 还需要对...

diansi8126的专栏 294

Visual Studio 2005Visual Studio 2008的区别

今天在机器上安装了visual studio2008,因为之前开发一直使用2005所以没有舍得把它卸载,安装之后证实这两个版本应该是可以共存的。不过也发现了一些问题,感觉现在机器上有些混乱了,visual 2005+.net framework 2.visual 2008 +.net framework 3.5有个大升级。 查了下资料,visual2005和2008

小璐子又回来了。。。 5986

Visual Studio中的XQuery支持

    今天Simon转发了一封咨询VS2005中各个版本对XQuery支持情况的邮件。由于从2002年到去年底一直在用,所以直接凭直觉认定各个版本都支持,事实证明冲动是魔鬼经验是巫师,以后还是考证清楚再回复,以免误导他人。他的问题是:1. vs2005哪种版本支持XQuery,哪些版本不支持XQuery。2. 在c# 项目中using System.Xml.Query;using Sys

技术无涯-Ray Zhang 653

Visual Studio 2008移动开发初体验(一)

Visual Studio 2008移动开发初体验(一)趁着黄金周的空闲,学习一下新的技术,好让自己的思维能跟上软件更新的脚步,这大概就是程序员所面对的现实吧。在这个黄金周里,我准备研究一下Visual Studio 2008中的移动开发部分。Visual Studio 2008目前还处在Beta 2的阶段,当年VS 2005的Beta 2,已经和日后我们看到的RTM版本相差无几了,但愿VS

aawolf = new Mobile.MVP 2万+

VS2005VSOrcasExpressLINQ各有所属~

 各有所属的属表示项目属性。今天终于决定实战一下LINQ。可惜在VS2005里面(已经安装了.NET Framework3.5),LINQ的语法总是带着隆重的波浪线,真的很是不爽,不用说当然是编译失败了。上MSDN看了半天,总说要安装LINQ,但是我在那页面找了半死都没发现所谓的可安装的LINQ,只有一个指向CTP版本的Orcas。很是郁闷,看到7、8张的CD就恼火,现在的软件怎么

volnet的专栏 299

LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据

第一篇 从CUD开始,如何使用LINQ to SQL插入、修改、删除数据 准备工作,现在数据库中建好测试表Student,这个表只有三个字段ID,Name,Hometown,其中ID为int类型的自增长字段,Name和Howmtown是nvarchar类型 1. 打开VS2010新建控制台应用程序,然后添加LINQ to SQL Class,命名为DbApp.dbml,新建db...

weixin_30501857的博客 120
上一篇: 技術人,你該警悌的事
下一篇: LINQ 首部曲 : LINQ To Object Part 1 - Using VB.NET 2008
Code6421
博客等级 码龄20年 259粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值