您的位置:首页 > 数据库

艾伟_转载:LINQ to SQL、NHibernate比较(二)-- LINQ to SQL实例

2011-08-29 00:21 573 查看
用ADO.NET操作数据库大家一定再熟悉不过了,select、insert、update等等SQL语句大家也都必然滚瓜烂熟。我将自己在学习LINQ to SQL过程中的动手经历记录下来,作为今后学习的参考,也希望对刚刚接触的人有一点帮助。

我在本文涉及到一个很简单的系统,利用DataGridView实现数据库数据的批量增、删、改,不是什么强大的功能。

如果有人感兴趣,可以在看完我的这篇文章之后用ADO.NET实现同样的功能,看看到底会比使用LINQ to SQL多多少时间,会多多少代码。(从设计到完成我用时大概2小时,代码量后面介绍中我会贴出我的代码)我相信很多人编码能力比我强很多,大家可以试试。总之尝试了LINQ to SQL我暂时没有用ADO.NET的想法。

(程序在Windows Server 2003、VSTS 2008、SQL Server 2005下完成)。
源码下载/Files/chenl861004/MyLinq.rar
1 什么系统?

1.1 数据库

先来看看数据库的设计,数据库名为test,作为简单系统的测试用数据库,test数据库含有三个表,Item、ItemIn和ItemOut。

xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
configSections>
<connectionStrings>
<add
name="MyLinq.Properties.Settings.testConnectionString"
connectionString="Data Source=chenliang1;Initial Catalog=test;Integrated Security=True"
providerName="System.Data.SqlClient" />
connectionStrings>
configuration>

2.2
实体类

1. 在数据源中右键点击添加新数据源

using System;
using System.Transactions;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;
using System.Windows.Forms;
using MyLinq.ORM;

namespace MyLinq.MyMethod

Methods类包含了处理窗体事件的方法我们在窗体代码中调用即可,下面是Item窗体代码。

Item窗体:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Linq;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MyLinq.MyMethod;
using MyLinq.ORM;

namespace MyLinq

其他两个窗体代码类似于Item,由此可见,窗体中只需调用Methods类中的相应方法,就可以实现所有需要的功能,并且只用传递一个泛型参数即可,无需每个窗体都写不同的数据库操作语句,并且利用添加数据源的方式,等同于在LINQ to SQL层和业务层又建立了一个中间层,使得我们甚至连LINQ to SQL的InsertToSubmit等方法的调用都省略。因为前台的DataGridView会根据我们对它的每次操作自动调用相应的增、删、改方法对内存中的实例对象类进行修改,一旦调用了SubmitChanges后才全部提交。

(关于LINQ to SQL到底有哪些使用的方法,请参看LINQ to SQL、NHibernate比较(一)-- LINQ和NHibernate初体验

2.4 实体类属性



图2.8 实体类属性

我们也可以在test.designer.cs中修改实体类属性的一些规则,比如我修改了ItemIn入库时间必须在1753-1-1 12:00:00和9999-12-31 11:59:59之间,这是根据SQL Server数据库来设置的。这样前台的DataGridView就不会接受越界的值。

3.小结

本文通过记录自己在学习LINQ to SQL过程中的一个简单例子,分析了基于LINQ to SQL作为数据库持久层的MIS系统的实现,虽然功能很简单,但是已经初窥可以感到LINQ to SQL给我们带来的方便。

试想如果这个系统是直接用ADO.NET实现,那么远不止这些代码,尤其是涉及到批量操作上面,我们需要判断DataGridView那些行进行了修改,添加了哪些行,删除了哪些行。开发时间将会变长,出错的几率也会变大,同时如果窗体较多,每个窗体都要设计相对独立的SQL语句,扩展很不方便,维护成了难题,LINQ to SQL默默地为我们完成了很多工作。

微软下一代ORM方案ADO.NET Entity Framework已经出现,并且随着VS2010和.NET 4.0的发布应该现在比较完善了,不过LINQ to SQL对于开发中小企业项目来说仍不失为一个不错的选择。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: