最近网上看了一些关于Linq to sql 方面的资料,怎么说呢,感觉网上写的都挺不错的,但总感觉, 那些仅仅是个例子,只能当练习用,如果真的当作项目作,你能放心通过拖拉,让系统生成代码的过程么?那样做,快是快了点,可如果你的系统稍微做点修改,你看到那些自动生成的代码,估计每个人都会晕,更别说修改了。
对数据库操作,一般我们都会用到用到用户登录这个模块,通过输入用户名、密码,进行验证,通过用户所属角色,对对用户进行相应的操作。由于考虑到系统的分层。因此将各个模块进行了独立(我系统架构学的也不是太好,有不好的地方,欢迎大家批评指正。)
数据访问层(DAL):
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Data.Linq;
using
System.Configuration;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
namespace
Team.DBUtility
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//// <summary>
/// 数据库底层操作类
/// </summary>
public sealed class DLinqHelper
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//// <summary>
/// 连接数据库字符串
/// </summary>
private static string ConnectionString = ConfigurationManager.ConnectionStrings["TeamConnectionString"].ConnectionString;
private static DataContext MyDataContext = new DataContext(ConnectionString);
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//// <summary>
/// 获取数据内容
/// </summary>
public static DataContext GetDataContext
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
get
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return MyDataContext;
}
}
}
}
为了简单,我建立的数据表包含的字段有用户姓名、用户登录代码,用户密码,用户角色字段。以下为用户登录信息表代码:
/**/
/*==============================================================*/
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
/**/
/* Table: USER_INFO */
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
/**/
/*==============================================================*/
create
table
USER_INFO (
NAME
varchar
(
100
)
not
null
,
CODE
varchar
(
20
)
not
null
,
ROLE
varchar
(
20
)
not
null
,
PASSWORD
varchar
(
20
)
not
null
,
CONTENT
varchar
(
100
)
null
,
constraint
PK_USER_INFO
primary
key
nonclustered
(CODE)
)
go
Linq To Sql 和NHibernate 差不多,说白了都是个O/R ,因此我们也需要一个类 对应数据表的映射文件。代码如下:
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Data.Linq.Mapping;
using
System.Data.Linq;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
namespace
Team.Model
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//// <summary>
/// 登录用户信息
/// </summary>
[Table(Name="User_Info")]
public class UserInfo
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
私有成员#region 私有成员
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
private string _name;
private string _code;
private string _role;
private string _password;
private string _content;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
#endregion
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
[Column(Name = "Name", DbType = "varchar(100) Not Null")]
public string Name
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
get
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return _name;
}
set
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
_name = value;
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
[Column(Name = "Code", IsPrimaryKey = true, DbType = "varchar(20) Not Null")]
public string Code
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
get
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return _code;
}
set
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
_code = value;
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
[Column(Name = "Role", DbType = "varchar(20) Not NUll")]
public string Role
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
get
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return _role;
}
set
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
_role = value;
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
[Column(Name = "Password", DbType = "varchar(20) Not NUll")]
public string Password
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
get
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return _password;
}
set
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
_password = value;
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
[Column(Name = "Content", DbType = "varchar(100) Null", CanBeNull = true)]
public string Content
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
get
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)