Maticsoft.Framework for Asp.Net框架应用实例(一)
来源:互联网 发布:windows跳板机搭建 编辑:程序博客网 时间:2024/05/17 22:37
Maticsoft.Framework,短小精悍,超级实用,用于解决操作数据库,解决程序重复劳动,具有高度灵活扩展性。
使用它后甚至可以抛弃代码生成工具(它只解决数据新增,删除,
修改,分页一旦数据库字段发生改变所有方法都得重新生成!!那是一件多么麻烦的事!!而此框架正可以解决此问题)
本人.NET开发8年,多年参于国家部委项目开发,积累了很多实战经验,此开发框架经过多年项目实战已经具备实用价值,且非常适合中小型企业网站系统使用。
系统极为精简,容易上手,可以极大的减轻开发人员工作量!!
通常开发人员人修改数据库字段后,得调整数据层(或用代码工具重新生成),极为繁索,而此框架可以避免这种工作,而只需要“重构”Model相关属性即可。
如CRUD操作,获取实体列表,分页等都封装,且支持ODBC,也就是说可以支持很多数据库类型,对于高手而言可以经实现扩展。
系统中包含简单事件处理程序,及担供一套供跨平台应用,及javascript调用方法等
框架使用方法:
1、新建空解决方案,并新增Model,IDAL,DAL,BLL类型为类库
2、在DAL和BLL引用Maticsoft.Framework.dll
DAL中引用IDAL,BLL引用IDAL和DAL
3、复制下载的包Maticsoft.Framework.zip中相关目录中
BaseManager.cs复制到BLL中
BaseDao.cs复制到DAL中
IBaseDao.cs复制到IDAL中
PrimaryKey.cs复制到Model中
4、新增Model,T_Subject.cs文件,和数据库对应
5、新增T_SubjectDao.cs在DAL中,并修改类头一行为,使类继承自BaseDao,这样T_SubjectDao就包含了所有操作数据库的行为方法
如Add,Update,GetDataList,GetTModel方法等,如果这些方法还不够用,就需要在这个类中增加数据层方法,如下
public partial class T_SubjectDao : BaseDao<T_Subject>{public T_SubjectDao(){}public List<T_Subject> GetSubjectListByQuesType(int ques_type){return this.GetModelList("","","略。。。","");}}
6、创建业务层T_SubjectManager.cs存于BLL中
public partial class T_SubjectManager : BaseManager<T_Subject>{private readonly DAL.T_SubjectDao dal = new DAL.T_SubjectDao();public override IDbTransaction Transaction{get{return base.Transaction;}set{//如果该表需要操作多个表,即多个DAL,则只需要在这里加上//this.用户表Dal.Transaction = value;这样这里的事务对象就支持多表操作了this.dal.Transaction = value;base.Transaction = value;}}public T_SubjectManager(){ }略........}
到此为止t_subject表的方法都实现完成,下面可以操作数据库了
//添加记录protected void Button2_Click(object sender, EventArgs e){ T_SubjectManager subjectManager = new T_SubjectManager(); int ret = subjectManager.Add(new Model.T_Subject() { subject = "测试题目", userid = "test" }); //ret为返回的自增id}//修改记录protected void Button3_Click(object sender, EventArgs e){ T_SubjectManager subjectManager = new T_SubjectManager(); //系统只修改subject字段,其它字段则不修改 subjectManager.Update(new Model.T_Subject() { subject = "测试题目,修改" }, string.Format("id=1"));}//删除记录protected void Button4_Click(object sender, EventArgs e){ T_SubjectManager subjectManager = new T_SubjectManager(); //系统只修改subject字段,其它字段则不修改 subjectManager.DeleteRecord(string.Format("id=1"));}
多业务对象事务支持(多个实体表):
public void TestTransaction(){ IDbTransaction stran = this.dal.BeginTransaction(); try { this.Transaction = stran; for (int i = 0; i < 3000000; i++) { var subject = new T_Subject { answer = "A" + i.ToString(), book_class_id = "", c_b_type = 0, ques_level = 7, ques_type = 1, subject = string.Format("【{0}】测试数据【{0}】", i), userid = "test", zscore = 5 }; this.dal.Add(subject); } this.dal.Commit(); } catch (Exception) { this.dal.Rollback(); throw; } finally { this.Transaction = null; }}
分页支持,此方法支持多表关联查询,可以将表名设为【 t_suject t left join t_user u on t.userid=u.u_id 】:List<t_subject> listSubject = GetModelList("t_subject","*", "条件","oder by ques_type asc", 1,100);DataSet ds = GetDataList("t_subject","*", "条件","oder by ques_type asc", 1,100);另外,我们还提供一套,文件上传存模式,(待开源中):
if (Directory.Exists(tmpDir)){ string path1 = string.Empty; string path2 = string.Empty; wcf.GetFilePath(this.BodyPath, adr, ref path1, ref path2); ArrayFileInfo file = null; if (file == null) { file = new ArrayFileInfo(); } file.SetBody(false, path1, path2, adr.Row); foreach (ListItem item in this.fileList.Items) { string itemFile = Path.Combine(tmpDir, item.Text); if (File.Exists(itemFile)) file.AddFile(itemFile); else file.AddFile(file.BodySubPath + item.Text, EditType.Normal); } if (file.FileList.Exists(w => { return w.fType != eType.None; })) { adr.Row.Add("product_image", file); }}
//保存数据,并根据tmpDir和数据行信息保存文件
wcf.FileSave(this.CurrentLevel, adr, this.eMode, out error, tmpDir);
以及下载文件等都有一套专门管理方式,可随着实体对象Model一同保存到数据库中,文件和条目数据不需要再分开管理非常便捷。
此方式成功应用于档案和文档管理系统中。
有多个网站,A,B,D三个网站实现的是一个独立功能,但是用户是一站式登录的,并且图片等用户自定义上传数据是共享的。
那么如何实现呢?每个系统上传的文件应该存于某一个特定的目录,这个目录是被三个系统所共享的。利用框架Maticsoft.Framework.VirtualFileProvider就可以轻松实现!!
大家都知道Asp.net WebForm开发方式是非常好的面向对象开发模式,WebControls开发复杂门槛比较高(代码容易保护,可以编译成DLL),
UserControls则非常好用且开发成本低,但是代码不容易保护,也就是用户控件不可以随程序集一同发布。现在告诉大家一个好消息,
使用Maticsoft.Framework可以实现对UserControls封装,可以很好的保护代码,使用方法如下:
void Application_Start(object sender, EventArgs e){ //其中WebControls.dll中包含了用户开发的用户控件 ZipFileVirtualPathProvider prov = new ZipFileVirtualPathProvider(Server.MapPath("bin\\WebControls.dll")); HostingEnvironment.RegisterVirtualPathProvider(prov); }调用方法:
aspx页面引用
方法1:会报语法错误,但可以正确运行
<%@ Register TagPrefix="uc1" TagName="WebUserControl" Src="WebControls.Controls.WebUserControl1.ascx" %><uc1:WebUserControl ID="WebUserControl1" runat="server"></uc1:WebUserControl>或者使用代码动态加载,没有语法错误,但需要手动编写代码,如下:
WebControls.Controls.WebUserControl1 control1 = this.LoadControl("WebControls.Controls.WebUserControl1.ascx")as WebControls.Controls.WebUserControl1;this.PlaceHolder1.Controls.Add(control1);
示例数据库脚本:
create table t_subject( id int自增, book_class_id int, c_b_type int, ques_type int, subject varchar(250), answer varchar(50) ques_level int zscore int, userid varchar(50));
****************************************************************************************
框架免费使用,有任何问题,请加qq群:26055929探讨!
如果你想学习框架和扩展框架,或想了解实现方法,想要【源码】的欢迎和我联系!!
邮箱:paaple@foxmail.com
作者:paaple 2015-07-26 @杭州滨江
源码下载:Maticsoft.Framework开发框架下载
****************************************************************************************
- Maticsoft.Framework for Asp.Net框架应用实例(一)
- EF(Asp.Net Entity Framework)做为数据模型框架 的应用
- 关于安装 ASP.NET 4.0(install ASP.NET for the .NET Framework 4.0)
- Page Template Framework for ASP.NET 1.1
- .Net Micro Framework研究—应用实例
- .Net Micro Framework研究—应用实例
- Jquery Pagination Ajax 分页实例 For ASP.NET MVC3(用Ado.Net Entity Framework作数据操作)
- ASP.net随机数应用实例
- ASP.net随机数应用实例
- ASP.net随机数应用实例
- ASP.net随机数应用实例
- ASP.net随机数应用实例
- ASP.net随机数应用实例
- ASP.net随机数应用实例
- ASP.net随机数应用实例
- ASP.net随机数应用实例
- ASP.NET随机数应用实例
- ASP.NET FileUpload应用实例
- 动态生成页面(一)——ASP.NET中Literal使用
- Android studio grandle信息
- leetcode 47: Permutations II
- 从U盘安装Debian 8.1
- Sublime Text 2 注册码、插件
- Maticsoft.Framework for Asp.Net框架应用实例(一)
- 科技咨询笔记
- 九度oj 1183
- POJ 2724 Purifying Machine
- 2015-点餐系统(客户端)
- 运算符
- 归并排序
- java:用UDP协议,开发一个聊天工具代码
- HDU 1598 ( find the most comfortable road )