惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
雷峰网
雷峰网
J
Java Code Geeks
G
Google Developers Blog
博客园 - 司徒正美
The GitHub Blog
The GitHub Blog
L
LangChain Blog
人人都是产品经理
人人都是产品经理
GbyAI
GbyAI
Vercel News
Vercel News
S
SegmentFault 最新的问题
Engineering at Meta
Engineering at Meta
H
Hackread – Cybersecurity News, Data Breaches, AI and More
云风的 BLOG
云风的 BLOG
F
Fortinet All Blogs
Y
Y Combinator Blog
博客园_首页
Last Week in AI
Last Week in AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
A
About on SuperTechFans
B
Blog
Microsoft Security Blog
Microsoft Security Blog

博客园 - 帝之晓

Metabase里的 linked filters 使用 EntityFramework 6.0 修改一个已经存在的对象 这个功能是怎么实现的 英语英语。我想要把你学的很牛逼。 PS快捷键大全 附加数据库错误 5102 如何在三个月内获得三年的工作经验(转) sql2005还原数据库 Nettiers的GridViewSearchPanel - 帝之晓 - 博客园 企业库的日志使用 常用的40个网站制作技巧(收藏整理)转 - 帝之晓 - 博客园 asp.net里的基础概念 符合.net准则的事件 BlogEngine数据库结构 XmlSerializer 序列化和反序列化 决定好好研究一些开源的系统 .nettiers里的ServiceLayer和DomainModel 共享软件的十大破解工具 免费的css模板下载
TimeTracker研究
帝之晓 · 2009-03-08 · via 博客园 - 帝之晓

TimeTracker是微软一个比较简单的案例,这几天决定重新学一下asp.net,就从这些官方的案例开始入手研究。

数据库:

TimeTracker 是个简单的案例,主要的关系以及数据表如下图:

image

这里membership的关系表只显示了一张users表,因为这张表和这个系统关系比较紧密。

数据表不是很复杂,这里就不详细说了。

DAL:

TimeTracker虽然是个很小的案例,但是分层却一点也不含糊,照样有数据层,逻辑层,表现层,其中DAL里面有三个类:DataAccessHelpsers类,DataAccess类,SQLDataAccessLayer类,DataAccess是个抽象类,包含了该项目要实现的所有的数据操作类的抽象方法,SQLDataAccessLayer是继承与DataAccess类的在SqlServer上的具体实现,DataAccessHelper类是个工厂,在Web.config里面有个具体实现类的配置:

<add key="aspnet_staterKits_TimeTracker_DataAccessLayerType" value="ASPNET.StarterKit.DataAccessLayer.SQLDataAccess"/>

DataAccessHelper根据aspnet_staterKits_TimeTracker_DataAccessLayerType的值,生成具体的数据操作方法,其实这已经有点类似于petshop里面的provider模式了,只是这里实现的更简单了而已。

插一句,关于web.config文件,这个项目其实也挺值得学习的,比如:

<location path="login.aspx">
        <system.web>
            <authorization>
                <allow users="?" />
            </authorization>
        </system.web>
    </location>

这一段是定义login.aspx页面运行所有人访问。

<pages maintainScrollPositionOnPostBack="True" /> 这里定义了页面在postback以后滚动条滚动到之前的位置,这个特别有用,记得在以前要实现这个功能好像是挺花力气的。

BLL:

BLL里面的类直接把DomainModel和相关的逻辑都放在一起了,比如Category类,除了定义Category的字段,属性,还有它的实体方法和静态方法。这里的方法调用了数据层的时候用一下类似的方法:

DataAccess DALLayer = DataAccessHelper.GetDataAccess();
   return (DALLayer.GetAllCategories());

体现了设计原则里面的依赖抽象而不依赖具体实现的原则。

TimerTracker:

这个文件夹里就是具体的表现层了。

Global文件在程序开始的时候就判断角色系统,如果没有系统需要的角色就直接创建了角色。

关于用户的创建修改检索登陆就不说了,看一下教程,说的非常详细。

母版页里面放了一个Menu控件,之前没想到Menu控件能实现菜单这么好看,下次做菜单的时候看一下这个实现好了,不用自己写菜单代码了。

其他的页面代码里面主要就是数据控件 GridView,DataList,Repeater以及ObjectDataSource控件以及验证控件的使用了。另外,那个日历页面觉得好像做的不是很好,如果要在实际项目里面需要这个功能的话强烈推荐my97这个控件。