当前位置:  编程技术>.net/c#/asp.net
本页文章导读:
    ▪项目使用Entity Framework用到的公共操作方法基类(Repository)及其使用      在项目中会有很多常用的操作方法如添加、删除、修改等,而在使用EF时虽然已是ORM,但仍然会习惯性的在业务层写大量类似方法,为此,分享一个我在项目使用的公共基类,经过多次修改,.........
    ▪模板代码生成器 Template Code Creater      一 大概思路1.1 工作原理 从数据库(这里主要用Oracle数据库),读取相应的表结构(如表名、列名、列类型、列注释等),然后读取模板(用txt写的模板),最后通过匹配生成目标代码。.........
    ▪几个.net开源项目(转)      SharpDevelop 强大的插件系统,通过Addin构建成一个功能齐全的.net开发IDE。核心是AddInTree。跟随这个项目开发许多有用的组件,比如功能文本编辑器(ICSharpCode.TextEditor),SharpZipLib等。 链.........

[1]项目使用Entity Framework用到的公共操作方法基类(Repository)及其使用
    来源:    发布时间: 2013-10-28

在项目中会有很多常用的操作方法如添加、删除、修改等,而在使用EF时虽然已是ORM,但仍然会习惯性的在业务层写大量类似方法,为此,分享一个我在项目使用的公共基类,经过多次修改,已在mssql和oracle数据库项目上使用没问题。希望对使用EF开发项目的朋友有帮助,不是说写的有多好,只是为了分享,因为我在使用EF之初也一直在找这样一个类但资源很少。 欢迎拍砖,不要伤人就行。。。

以下是 Repository.cs源码 :

1 using System.Collections.Generic;
2 using System.Linq;
3 using System.Linq.Expressions;
4 using System.Data.Objects;
5 using System.Data.Common;
6 using System.Transactions;
7
8 namespace System.Data.Entity
9 {
10 public class Repository<TEntity> : IDisposable where TEntity : class
11 {
12 #region 私有属性
13 private ObjectContext objectContext;
14 private string entitySetName;
15 private string keyProperty = "ID";
16 private string keyPropertyType = "Int32";
17 #endregion
18
19 #region 公共属性
20 /// <summary>
21 /// 获得提供用于查询和使用对象形式的实体数据功能
22 /// </summary>
23 protected ObjectContext ObjContext
24 {
25 get
26 {
27 if (this.objectContext == null)
28 {
29 throw new Exception("数据库对象为空");
30 }
31 if (this.objectContext.Connection.State == System.Data.ConnectionState.Closed)
32 {
33 this.objectContext.Connection.Open(); //如果关闭则打开
34 }
35 return this.objectContext;
36 }
37 set
38 {
39 this.objectContext = value;
40 objectContext.MetadataWorkspace.LoadFromAssembly(typeof(TEntity).Assembly);
41 }
42 }
43 /// <summary>
44 /// 实体名字
45 /// </summary>
46 public string EntitySetName
47 {
48 get { return this.entitySetName; }
49 }
50 /// <summary>
51 /// 主键字段名
52 /// </summary>
53 public string KeyProperty
54 {
55 get { return this.keyProperty; }
56 }
57 /// <summary>
58 /// 主键字段类型
59 /// </summary>
60 public string KeyPropertyType
61 {

    
[2]模板代码生成器 Template Code Creater
    来源:    发布时间: 2013-10-28

一 大概思路

1.1 工作原理

 

从数据库(这里主要用Oracle数据库),读取相应的表结构(如表名、列名、列类型、列注释等),然后读取模板(用txt写的模板),最后通过匹配生成目标代码。

二 代码解释

2.1 文件解释

2.2 解析方式

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace [XXX]

{

public class [table_name]

{

public [table_name]()

{

}

/// <summary>

/// [table_name]构造函数

/// </summary>

<!--/// <param name="v_[col_name]">[col_name]</param>

-->

public [table_name](<!--[col_type] v_[col_name][,]-->)

{

<!--this._[col_name] = v_[col_name];

-->

}

<!--

/// <summary>

/// [col_name]

/// </summary>

private [col_type] _[col_name];

public [col_type] [col_name]

{

get { return this._[col_name]; }

set { this._[col_name] = value; }

}

-->

}

}

App.config(配置数据库连接),以T_[filename].txt为模板,规则如下:

[XXX]暂时不考虑

<!-- -->标识符里的为可循环内容

[table_name]、[col_name]、[col_type]、[col_comment]、[create_time]、[,]、[col_comment]为可替换内容

解析顺序:

1. 读取数据库所有表 或 根据SQL语句,将表结构放入一个List<TableObject>结构里

2. 读取全文

3. 读取<!-- -->内容,以取代 [table_name]、[col_name]、[col_type]、[col_comment]、[create_time]、[,]

4. 继续读取,以取代[table_name]、<!-- -->

5. 输出[table_name].cs文件

2.3 以T_为开头的模板文件

/*****************************************

-- create by: zhyongfeng

-- create date: [create_time]

-- fun:

-- P_CONDITION:where条件

-- P_TYPE:是否分页

-- P_CUR_PAGE:第几页

-- P_PAGE_SIZE:每页记录数

-- X_TOT_REC:总记录数

-- X_TOT_PAGE:总页数

-- X_CUR:输出

*****************************************/

procedure [table_name]_Info_Select(P_CONDITION in Varchar2,

P_TYPE varchar2,

P_CUR_PAGE integer,

P_PAGE_SIZE integer,

P_SORT varchar2,

P_DIR varchar2,

X_TOT_REC out integer,

X_TOT_PAGE out integer,

X_CUR out curtype) as

V_SQL long;

V_TOT_REC integer;

V_TOT_PAGE integer;

begin

V_SQL := 'select <!--e.[col_name][,] -->

from [table_name] e';

exception

When others then

rollback;

dbms_output.put_line('异常提示:'||sqlcode||':'||sqlerrm);

end;

/*****************************************

-- create by: zhyongfeng

-- create date: [create_time]

-- fun:增加

<!-- -- P_[col_name]:[col_comment]

-->

-- X_RE:输出

-- X_MSG:输出

*****************************************/

procedure [table_name]_Add(

<!-- P_[col_name] in [col_type],

--> X_RE out integer,

X_MSG out varchar2) is

V_COUNT integer;

begin

--新增数据

insert into [table_name](<!--[col_name][,]-->)

values(SEQ_EXAM_QUESTION.Nextval<!--[,]-->);

X_RE := 1;

X_MSG := '提示:新增成功!';

commit;

exception

when others then

rollback;

    
[3]几个.net开源项目(转)
    来源:    发布时间: 2013-10-28

SharpDevelop 

强大的插件系统,通过Addin构建成一个功能齐全的.net开发IDE。核心是AddInTree。跟随这个项目开发许多有用的组件,比如功能文本编辑器(ICSharpCode.TextEditor),SharpZipLib等。 

链接:http://www.icsharpcode.net/ 

  

DotNetNuke 

这个就是著名DNN,使用VB.NET进行开发。通过其基本架构可进行堆积木式快速建站。而且支持子网站系统。其由asp.net   Portal   start   kit进化而来。 

链接:http://www.dnnchina.net/   ,http://www.dotnetnuke.com 

  

Community   Server 

这个也是一个很著名的ASP.NET项目,记得好像最早系统原形为asp.net   Forums,后来加入了.Text   Blog   和nGallery成为一个完整的通用系统。对应的中文版本为宝玉修改的CCS。 

链接:http://communityserver.org/ 

  

Rainbow 

另外一个类似于DNN的系统,使用C#进行开发。 

链接:http://www.rainbowportal.net/ 

  

RssBandit 

一个客户端的RSS查看器,使用C#   进行开发,最大的特点是数据存储采用xml文件。 

链接:http://www.rssbandit.org/ 

  

FreeTextbox 

Web上的一个Html超文本编辑器,早些版本是开源的,现在还是免费使用,不过源代码需要购买。 

链接:http://www.freetextbox.com 

  

World   Wind 

使用.NET开发的一个Windows窗体系统,以地球外观看得角度提供全球定位功能,类似于Google   Earth。 

链接:http://worldwind.arc.nasa.gov 

  

log4net 

对应Java中的log4j。一个强大的日志管理模块。 

链接:http://logging.apache.org/log4net/ 

  

Monodevelop 

非Windows   系统下的.net   平台开发工具。 

链接:http://www.monodevelop.com 

  

Paint.NET 

使用.net开发的画图软件,功能不错。 

链接:http://www.getpaint.net/index.html 

  

Nunit 

对应Java中的Junit,非常著名的单元测试工具。 

链接:http://www.nunit.org/ 

  

FCKeditor 

Web上的又一个Html超文本编辑器。 

链接:http://www.fckeditor.net/ 

  

Nlog 

一个日志管理库,类似于Log4Net。 

链接:http://www.nlog-project.org/ 

  

ManagedSpy 

.net   平台下的Spy   ++,支持通过.net   2.0开的Windows   Forms应用程序。 

链接:http://msdn.microsoft.com/msdnmag/issues/06/04/ManagedSpy/ 

  

Guidance   Explore 

类似于一个.net平台编程问题简答的FAQ。不过提供的都是英文。 

链接:http://www.codeplex.com/Wiki/View.aspx?ProjectName=guidanceExplorer 

  

Terrarium 

一个.net开发的多人游戏。玩这个游戏可以提高编程能力^_^。 

链接:http://www.windowsforms.net/Default.aspx?tabindex=4&tabid=49 

  

TaskVision 

任务管理系统,一个经典的Smart   Client智能客户端程序。 

链接:http://www.windowsforms.net/Default.aspx?tabindex=4&tabid=49 

  

IssueVision 

事务管理系统,Smart   Client智能客户端程序。 

链接:http://www.windowsforms.net/Default.aspx?tabindex=4&tabid=49 

  

FotoVision 

又一个值得学习的.net开发的Windows应用程序。 

链接:http://www.windowsforms.net/Default.aspx?tabindex=4&tabid=49 

  

Infragistics   Tracker   Application 

由Infragistics开发的Smart   Client智能客户端程序。 

链接:http://www.windowsforms.net/Default.aspx?tabindex=4&tabid=49 

  

Windows   Forms   RSS   Portal 

一个.net   开发的聚合器。 

链接:http://www.windowsforms.net/Default.aspx?tabindex=4&tabid=49 

  

Enterprise   Library 

微软的企业库,对原早些时候开发的一些Block   模块进行整合提供企业统一的接口,新版本使用了.net   2.0的的许多功能。 

链接:http://msdn.microsoft.com/practices/ 

  

PetShop 

基于N-tier设计的电子商务网站,没什么好说的了。 

链接:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/bdasamppet4.asp 

  

XmlNotepad 

一个用.net   开发的xml文件编辑器。 

链接:http://www.microsoft.com/china/msdn/library/data/xml/xmlnotepad.mspx 

  

DockManager   Control 

一个很不错的实现类似于VS   2005的界面某些功能的组件。 

链接:http://www.codeproject.com/vb/net/DockPanelSkin.asp 

  

Starter   Kits   for   Visual   Web   Developer 

该套件为学习研究应用asp.net2.0的开发人员提供许多宝贵资源,很不错。 

本文链接


    
最新技术文章:
 




特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3