赞助商
上一篇:LINQ TO SQL学习笔记(6)_常见异常及解决办法

引言

本文介绍Linq to sql在实际工程中的例子,利用TreeView,递归实现导航功能。在下一篇当中我们会结合角色权限进行有选择的加载。

系统环境


  • Visual Studio 2010 +NET Framework 3.5+Microsoft SQL Server 2005+Window XP+ SP3
  • LINQ TO SQL采用配置式开发

开发实现

由于linq to sql属于ORM属于Bottom Up的ORM设计框架,结合TreeView特点。我们先设计数据库。

数据库设计观察TreeView的Node的特点,一种是有子点,另外一种是叶子节点。我们设计的PDM模型如下:

有子点的Node对象对应模块分类表,叶子节点Node对应模块表。其中模块分类表自身有1对多关系(一个模块分类可以继续子分类),和模块表是1对多关系(对各叶子节点模块属于同一个模块分类)

生成表PB_MODULE_TYPE 的SQL(MS SQLSERVER 2005)如下:
  1. USE [Test]
  2. GO
  3. /****** 对象:  Table [dbo].[MODULE_TYPE]    脚本日期: 06/16/2009 17:05:43 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. SET ANSI_PADDING ON
  9. GO
  10. CREATE TABLE [dbo].[MODULE_TYPE](
  11.     [ID] [varchar](15) COLLATE Chinese_PRC_CI_AS NOT NULL,
  12.     [PARENT_ID] [varchar](15) COLLATE Chinese_PRC_CI_AS NULL,
  13.     [NAME] [varchar](40) COLLATE Chinese_PRC_CI_AS NOT NULL,
  14.     [REMARK] [varchar](200) COLLATE Chinese_PRC_CI_AS NULL,
  15.     [ORDER_ID] [int] NOT NULL,
  16. CONSTRAINT [PK_PB_MODULE_TYPE] PRIMARY KEY NONCLUSTERED
  17. (
  18.     [ID] ASC
  19. )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
  20. ) ON [PRIMARY]

  21. GO
  22. SET ANSI_PADDING OFF
  23. GO
  24. USE [Test]
  25. GO
  26. ALTER TABLE [dbo].[MODULE_TYPE]  WITH CHECK ADD  CONSTRAINT [FK_PB_MODULE_TYPE_PB_MODULE_TYPE] FOREIGN KEY([PARENT_ID])
  27. REFERENCES [dbo].[MODULE_TYPE] ([ID])

  28. INSERT INTO dbo.PB_MODULE_TYPE (PB_ID,  PB_NAME, PB_ORDER_ID) VALUES ('0000000001', '分类1', 10)
  29. INSERT INTO dbo.PB_MODULE_TYPE (PB_ID, PB_PARENT_ID ,PB_NAME, PB_ORDER_ID) VALUES ('0000000011','0000000001', '分类11',11)
  30. INSERT INTO dbo.PB_MODULE_TYPE (PB_ID, PB_PARENT_ID ,PB_NAME, PB_ORDER_ID) VALUES('0000000012', '0000000001','分类12', 12)
  31. INSERT INTO dbo.PB_MODULE_TYPE (PB_ID, PB_NAME,PB_ORDER_ID) VALUES ('0000000002', '分类2', 20)
  32. INSERT INTO dbo.PB_MODULE_TYPE (PB_ID, PB_NAME, PB_ORDER_ID) VALUES ('0000000003', '分类3', 30)
  33. INSERT INTO dbo.PB_MODULE_TYPE (PB_ID, PB_NAME, PB_ORDER_ID) VALUES ('0000000004', '分类4', 40)
  34. go
复制代码
生成表PB_MODULE_TYPE 的SQL(MS SQLSERVER 2005)如下:
  1. USE [Test]
  2. GO
  3. /****** 对象:  Table [dbo].[MODULE]    脚本日期: 06/16/2009 17:06:41 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. SET ANSI_PADDING ON
  9. GO
  10. CREATE TABLE [dbo].[MODULE](
  11.     [ID] [varchar](15) COLLATE Chinese_PRC_CI_AS NOT NULL,
  12.     [MODULE_TYPE_ID] [varchar](15) COLLATE Chinese_PRC_CI_AS NOT NULL,
  13.     [TAG] [varchar](40) COLLATE Chinese_PRC_CI_AS NOT NULL,
  14.     [NAME] [varchar](40) COLLATE Chinese_PRC_CI_AS NOT NULL,
  15.     [MODULE_URL] [varchar](200) COLLATE Chinese_PRC_CI_AS NULL,
  16.     [REMARK] [varchar](200) COLLATE Chinese_PRC_CI_AS NULL,
  17.     [DISABLED] [int] NOT NULL,
  18.     [ORDER_ID] [int] NOT NULL,
  19. CONSTRAINT [PK_PB_MODULE] PRIMARY KEY NONCLUSTERED
  20. (
  21.     [ID] ASC
  22. )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
  23. ) ON [PRIMARY]

  24. GO
  25. SET ANSI_PADDING OFF
  26. GO
  27. USE [Test]
  28. GO
  29. ALTER TABLE [dbo].[MODULE]  WITH CHECK ADD  CONSTRAINT [FK_PB_MODULE_PB_MODULE_TYPE1] FOREIGN KEY([MODULE_TYPE_ID])
  30. REFERENCES [dbo].[MODULE_TYPE] ([ID])
  31. INSERT INTO dbo.PB_MODULE (PB_ID, PB_MODULE_TYPE_ID, PB_TAG, PB_NAME, PB_MODULE_URL, PB_DISABLED, PB_ORDER_ID) VALUES ('0000000000', '0000000001', 'SysCodeMgr', '百度', 'www.ambow.com', 0, 10)
  32. INSERT INTO dbo.PB_MODULE (PB_ID, PB_MODULE_TYPE_ID, PB_TAG, PB_NAME, PB_MODULE_URL, PB_DISABLED, PB_ORDER_ID) VALUES ('0000000001', '0000000001', 'ModuleMgr', '安博', 'www.ambow.com', 0, 20)
  33. INSERT INTO dbo.PB_MODULE (PB_ID, PB_MODULE_TYPE_ID, PB_TAG, PB_NAME, PB_MODULE_URL, PB_DISABLED, PB_ORDER_ID) VALUES ('0000000002', '0000000011', 'RoleMgr', '软件培训', 'www.ambow.com', 0, 10)
  34. INSERT INTO dbo.PB_MODULE (PB_ID, PB_MODULE_TYPE_ID, PB_TAG, PB_NAME, PB_MODULE_URL, PB_DISABLED, PB_ORDER_ID) VALUES ('0000000003', '0000000012', 'DepartmentMgr', '心心相映', '', 0, 20)
  35. INSERT INTO dbo.PB_MODULE (PB_ID, PB_MODULE_TYPE_ID, PB_TAG, PB_NAME, PB_MODULE_URL, PB_DISABLED, PB_ORDER_ID) VALUES ('0000000004', '0000000012', 'StaffMgr', '昆山安博软件外包产业园', 'www.ambow.com', 0, 30)
  36. INSERT INTO dbo.PB_MODULE (PB_ID, PB_MODULE_TYPE_ID, PB_TAG, PB_NAME, PB_MODULE_URL, PB_DISABLED, PB_ORDER_ID) VALUES ('0000000005', '0000000002', 'ChangeMyPwd', '新浪', 'www.sina.com', 0, 10)
  37. INSERT INTO dbo.PB_MODULE (PB_ID, PB_MODULE_TYPE_ID, PB_TAG, PB_NAME, PB_MODULE_URL, PB_DISABLED, PB_ORDER_ID) VALUES ('0000000006', '0000000003', 'UserMgr', '雅虎', 'www.qq.com', 0, 10)
复制代码
赞助商
赞助商
TOP