ASP.NET MVC5+EF6+EasyUI 后台管理系统(35)-文章发布系统②-构建项目
注:阅读本文,需要阅读本系列的之前文章 代码生成器下载地址(文章开头处)
接下来我们建立数据库的表和各层的代码
我们只需要两张表,文章列表(MIS_Article)和类别表(MIS_Article_Category)
USE [AppDB]
GO
/****** Object: Table [dbo].[MIS_Article] Script Date: 05/15/2014 17:33:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[MIS_Article](
[Id] [varchar](50) NOT NULL, --主键
[ChannelId] [int] NOT NULL, --频道(预留字段,以后可能需要扩张)
[CategoryId] [varchar](50) NOT NULL, --类别
[Title] [varchar](100) NOT NULL, --标题
[ImgUrl] [varchar](255) NULL, --图片
[BodyContent] [varchar](8000) NULL, --内容
[Sort] [int] NULL, --排序
[Click] [int] NULL, --访问次数
[CheckFlag] [int] NOT NULL, --是否审核
[Checker] [varchar](50) NULL, --审核人
[CheckDateTime] [datetime] NULL, --审核时间
[Creater] [varchar](50) NULL, --创建人
[CreateTime] [datetime] NULL, --创建时间
CONSTRAINT [PK__MIS_Arti__3214EC07038683F8] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFFQ
GO
ALTER TABLE [dbo].[MIS_Article] WITH CHECK ADD CONSTRAINT [FK_MIS_Article_MIS_Article_Category] FOREIGN KEY([CategoryId])
REFERENCES [dbo].[MIS_Article_Category] ([Id])
GO
ALTER TABLE [dbo].[MIS_Article] CHECK CONSTRAINT [FK_MIS_Article_MIS_Article_Category]
GO
ALTER TABLE [dbo].[MIS_Article] WITH CHECK ADD CONSTRAINT [FK_MIS_Article_SysUser] FOREIGN KEY([Creater])
REFERENCES [dbo].[SysUser] ([Id])
GO
ALTER TABLE [dbo].[MIS_Article] CHECK CONSTRAINT [FK_MIS_Article_SysUser]
GO
ALTER TABLE [dbo].[MIS_Article] WITH NOCHECK ADD CONSTRAINT [FK_MIS_Article_SysUser1] FOREIGN KEY([Checker])
REFERENCES [dbo].[SysUser] ([Id])
ON DELETE SET NULL
GO
ALTER TABLE [dbo].[MIS_Article] CHECK CONSTRAINT [FK_MIS_Article_SysUser1]
GO
ALTER TABLE [dbo].[MIS_Article] ADD CONSTRAINT [DF_MIS_Article_CheckFlag] DEFAULT ((0)) FOR [CheckFlag]
GO
ALTER TABLE [dbo].[MIS_Article] ADD CONSTRAINT [DF__MIS_Artic__Creat__056ECC6A] DEFAULT (getdate()) FOR [CreateTime]
GO
USE [AppDB]
GO
/****** Object: Table [dbo].[MIS_Article_Category] Script Date: 05/15/2014 17:37:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[MIS_Article_Category](
[Id] [varchar](50) NOT NULL, --主键
[ChannelId] [int] NULL, --预留字段
[Name] [varchar](100) NOT NULL, --类别名
[ParentId] [varchar](50) NULL, --上级ID
[Sort] [int] NULL, --排序
[ImgUrl] [varchar](255) NULL,--图片
[BodyContent] [varchar](8000) NULL,--描述
[CreateTime] [datetime] NULL,--创建时间
[Enable] [bit] NOT NULL, --是否启用
CONSTRAINT [PK__MIS_Arti__3214EC077DCDAAA2] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[MIS_Article_Category] WITH NOCHECK ADD CONSTRAINT [FK_MIS_Article_Category_MIS_Article_Category] FOREIGN KEY([ParentId])
REFERENCES [dbo].[MIS_Article_Category] ([Id])
GO
ALTER TABLE [dbo].[MIS_Article_Category] NOCHECK CONSTRAINT [FK_MIS_Article_Category_MIS_Article_Category]
GO
ALTER TABLE [dbo].[MIS_Article_Category] ADD CONSTRAINT [DF__MIS_Artic__Paren__7FB5F314] DEFAULT ((0)) FOR [ParentId]
GO
ALTER TABLE [dbo].[MIS_Article_Category] ADD CONSTRAINT [DF__MIS_Artic__Creat__00AA174D] DEFAULT (getdate()) FOR [CreateTime]
GO
数据库执行表之后,并更新到EF。
1.新建项目类库,App.MIS.IBLL,App.MIS.BLL,App.MIS.IDAL,App.MIS.DAL和App.Models下的MIS文件夹(并进行相互的引用,引用参照DAL,BLL层)
2.打开我们的代码生成器生成文章列表(MIS_Article)和类别表(MIS_Article_Category)的各层,并放入我们的类库,然后实行注入到系统
注:生成器能生成增删改查
最后生成目录如下所示
3.我们这次使用区域,使用区域最大的好处在于项目分离
新建区域,在Areas上右键新建区域,输入MIS,以后我们一个区域代表的是一个子系统!
可以扩展CMS(内容管理系统) CRM(客户管理系统)等系统实现项目分离
其中的ArticleController和CategoryController ManageArticleController MyArticleController对应的是上一篇导航模块里面的地址链接
其中ManageArticle是管理员能看到所有文章的模块和具有审核功能,MyArticle只能看到自己发布的,你可以把这个发布系统,看成是一个内部的文章共享系统
4.编译系统,看看有无引用出错等信息,并修改,Easy to you!
现在估计可以运行系统,并能获取简单的视图了
第一次生成并不能生成我下面这种效果,需要再加一些特效,我下面是已经审核过的会表为蓝色。
下一节,kindeditor在MVC中使用
- libvirt-内存分配和内存热插拔
- selenium+python自动化79-文件下载(SendKeys)
- selenium+python自动化80-文件下载(不弹询问框)
- libvirt-cpu分配和cpu热插拔
- 如何使用curl调试openstack的api
- selenium+python自动化81-报告优化
- Selenium+python自动化82-只截某个元素的图
- libvirt-TLS加密
- 在openstck中配置使用cloud-init
- libvirt-使用cgroup做资源分割控制
- libvirt-usb设备透传给虚拟机
- Appium+python自动化22-Android夜神模拟器
- 每周学点大数据 | No.9递归——以阶乘为例
- appium+python自动化24-滑动方法封装(swipe)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android UI设计与开发之ViewPager仿微信引导界面以及动画效果
- Android UI设计与开发之ViewPager介绍和简单实现引导界面
- Android RollPagerView实现轮播图
- Android UI设计与开发之使用ViewPager实现欢迎引导页面
- Android ListView里控件添加监听方法的实例详解
- Android实现底部图片选择Dialog
- AndroidImageSlider实现炫酷轮播广告效果
- Android获取手机本机号码的实现方法
- Android中RecyclerView的item宽高问题详解
- Andoroid实现底部图片选择Dialog效果
- Android中ExpandableListView使用示例详解
- Android 高德地图之poi搜索功能的实现代码
- Android实现底部弹出按钮菜单升级版
- Android实现单页面浮层可拖动view的示例代码
- 漫画:最长公共子序列