博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Farseer.net轻量级开源框架 入门篇:普通逻辑层
阅读量:4693 次
发布时间:2019-06-09

本文共 5595 字,大约阅读时间需要 18 分钟。

导航

目   录:

上一篇:

下一篇:

接下来,讲的是我们最最最常用的一个操作,普通逻辑层。项目中90%以上的数据库表,都是继承此类。

先放上一个案例DEMO给大家。(还是用我们之前创建好的Users实体类)

 它继承了BaseModel基类。下面我们看看VS的智能感应,会弹出什么列表。

可以看到,在不实例化(静态方法、属性)的情况下。有:

Cache属性

缓存数据,根据条件、排序、获取数据。生成一个Cache Key值。在取值时。

可以根据CacheConfigs的配置文件中自定义的方式,来决定是否取缓存的数据。

我们先看下配置文件:~/App_Data/Cache.config 配置文件。(如果不存在,框架会在你调用访属性时,自动生成)

这里的缓存会根据下面的配置(缓存失效时间)来设置,多久过期。

这里要注意的是,数据库如果改动了。这里的数据就会变成脏数据。不会关联。

只有等到缓存失效后,才能重新获取到最新的数据。(这个也是跟缓存逻辑比较大的区别之一)

1     public class CacheConfig 2     { 3         ///  4         /// 数据在VisitTime分钟内被访问VisitCount次后开始缓存 5         ///  6         public int VisitTime = 30; 7  8         ///  9         /// 数据在VisitTime分钟内被访问VisitCount次后开始缓存10         /// 11         public int VisitCount = 10;12 13         /// 14         /// 缓存失效分钟15         /// 16         public int CacheTimeOut = 120;17     }

接下来,直接看下Cache属性下,有哪些操作吧:

就是一些常用的获取数据的操作。(这个方法则没有对数据库进行写、删除的操作)

比如:

1             Users.Cache.Where(o => o.ID == 1).ToInfo();2             List
lst = new List
() { 1, 2, 3, 4, 5 };3 Users.Cache.Where(o => lst.Contains(o.ID)).ToList();

 同时,每个方法里。都有参数:

/// 是否忽略统计,直接加入缓存

默认为False,如果显示传入True时,则表示,不经过统计,直接加入缓存。

 

Data属性

可以看到,该属性跟Cache是很相似的。唯一不同的两处地方是:Data不是缓存操作;

Data含有单值修改、删除等操作。一般来说,只要不考虑缓存。都是用Data属性里面的操作方法。

这里的Data 返回的对象是:Bean<Users>对象。

DataResult属性

在Data操作后,会返回操作结果,包括:查询数据库时间、SQL、等一系列性能反馈。

View Code
1 namespace FS.Core.Bean 2 { 3     ///  4     /// 返回执行结果 5     ///  6     public class DataResult
where TInfo : ModelInfo, new() 7 { 8 ///
9 /// 执行的Sql10 /// 11 public string Sql { get; set; }12 13 ///
14 /// Sql生成时间15 /// 16 public double SqlBuildTime { get; set; }17 18 ///
19 /// 操作数据时间20 /// 21 public double OperateDataTime { get; set; }22 23 ///
24 /// 转到实体用时25 /// 26 public double ToModelTime { get; set; }27 28 ///
29 /// 参数列表30 /// 31 public List
ParmsList { get; set; }32 }33 }

 

Form、QueryString(方法)

即从表单中获取填入的值,赋值到实体类中。

这里有个规则,表单控件的命名ID组成:前缀 + 实体属性名称

如:在我们的实体类中有个属性:UserName。

  那我们控件命名为:ID="hlUserName"    即前缀为   hl (框架默认为hl)

  这里要注意的是,单次获取的表单里的前缀必需统一。

 

实例化

最后,我们看下实例化后,有哪些方法操作。

 

实例化后有:Fill、Join、GetValue、Insert、Save、Update 等方法

其中Join 是关联其它表的数据,这里将在其它篇幅中讲解

Fill:将实体类填充到控件中。即当这个实体类从数据库得到值后。

我们可以用这个方法。将所有属性的值,赋值到控件中。

代替:等一系列的操作。

1 hlUserName.TextBox = user.UserName;2 hlID.TextBox = User.ID.ToString();

 

GetValue:获取单个属性的值。在运行的时候,动态获取属性值。下面两句是等同的。

1 user.GetValue("ID", 0);2 user.ID;

 

Insert:数据插入

页面控件
1                 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
用户名
密码
性别
邮箱
1     void btnAdd_Click(object sender, EventArgs e) 2     { 3         // Form 即从表单提交过来的数据。赋值到实体类中。与Fill操作,正好相反 4         var info = Users.Form(); 5         // Check 检测实体类赋值情况。根据实体类的特性申明,进行判断 6         if (!info.Check()) { return; } 7  8         info.Insert(); 9 10         JavaScript.Alert("注册成功!", "/");11     }

 

Update:数据修改

页面html
1                 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
用户名
密码
性别
邮箱
1     void btnSave_Click(object sender, EventArgs e) 2     { 3         // Form 即从表单提交过来的数据。赋值到实体类中。与Fill操作,正好相反 4         var info = Users.Form(null, "hl2"); 5         // Check 检测实体类赋值情况。根据实体类的特性申明,进行判断 6         if (!info.Check()) { return; } 7  8         info.Update(reqID); 9 10         JavaScript.Alert("修改成功!", "/");11     }
总结

这篇基本上都介绍了BaseModel的使用。

可能有些同学们会疑问Data、Cache的区别。

Data:读写数据。不作缓存处理。即时操作。

Cache:只有读数据操作。根据一定时间内和调用次数。会判断是否加入缓存。

下次在调用时。会根据同样的条件、排序的SQL,生成Key值来取缓存的值。

也就是说,如果缓存没有命中,它跟Data的读数据,是没有区别的。但是当命中缓存时。这时他会到缓存中取值。

原理:

根据Where条件、Sort排序、Top数量 组合成 Key 加入统计队列。

根据这个Key ,统计在一定时间范围内,访问的次数。如果符合,则加入缓存。

这里涉及到的三个配置项:统计时间、访问次数、缓存失效时间。都可以在~/App_Data/Cache.config 中进行手动配置。

 

导航

目   录:

上一篇:

下一篇:

广告时间

QQ群:116228666 (Farseer.net开源框架交流) 请注明:Farseer.Net

Farseer.Net是一款ORM框架 + 常用工具 + 扩展集合。

Farseer 意为:先知、预言家 通常在某些场合时,提供计谋、策略。也希望该框架能给大家提供最大化的便捷。

ORM:其英文全称是:Object(对象) Relational(关系) Mapping(映射)

Farseer.Net的目标是:快速上手、快速开发、简单方便。

1 new User { ID = 1, Name = "张三" }.Insert()

转载于:https://www.cnblogs.com/steden/archive/2013/01/22/2871168.html

你可能感兴趣的文章
oracle12c(oracle12.1.0.1.0)安装指南--实测OEL5.9(RH5)
查看>>
北京邮电大学 程序设计课程设计 电梯 文件输入版本(已调试,大致正确运行==)...
查看>>
C++学习:任意合法状态下汉诺塔的移动(原创)
查看>>
log4j2简单使用
查看>>
学霸修炼的秘籍
查看>>
Duplicate 复制数据库 搭建Dataguard
查看>>
Java导入execl
查看>>
next
查看>>
数据库---表---多表查询
查看>>
【分享】常用获取IP及地区信息API
查看>>
正则表达式 环视
查看>>
关于Tchar
查看>>
小白学习Spark系列三:RDD常用方法总结
查看>>
shell 脚本实战笔记(10)--spark集群脚本片段念念碎
查看>>
HDU - 3572 Task Schedule
查看>>
log4j2.xml的例子
查看>>
1004 四子连棋
查看>>
二、第一个C程序:Hello World!
查看>>
Ubuntu 编译 ARM-Linux-Gcc 工具链 -- 编译过程
查看>>
java url生成二维码保存到本地
查看>>