C# 自己实现的一套ORM程序附带实体生成工具

程序全部是自己实现的,原理是对sql语句的包装,现在支持mysql和sqlite,可以扩展到现在主流的数据库。

 

程序下载地址:C# 自已实现ORM程序下载

 

实体生成工具下载:实体生成工具下载

 

下面对程序进行介绍。

 

首先添加引用:DB.DAL.dll,MySql.Data.dll,System.Data.SQLite.dll

 

建立数据源:

 

<span style="font-size:14px;">public class dbResource
    {
        public static string TestDataConnStr = ConfigurationManager.ConnectionStrings["TestDataConnStr"].ConnectionString;

        /// <summary>
        /// Test数据库数据源
        /// </summary>
        public static IDataSourceType TestDataDBSource
        {
            get
            {
                IDataSourceType ds = IDataSourceTypeFactory.Create(DataSourceType.MySQL, TestDataConnStr);
                return ds;
            }
        }
    }</span>


在配置文件中添加如下连接字符串:

 

 

<span style="font-size:14px;"><connectionStrings>
    <add name="TestDataConnStr" connectionString="server=localhost;uid=root;pwd=123456;Database=Test;Connection Timeout=120;" />
  </connectionStrings></span>

 

 

 

 

 

使用生成工具生成实体类

 

 

使用图例:

 

选择生成的语言及数据库
 

 

生成:

 

 

其中生成的实体类例子如下:

 

<span style="font-size:14px;">[DataContract]
    [Table(TableName = "user")]
    public class drUser
    {
        [DataMember]
        [Column(IsPrimary = true, IsIdentity = true)]
        public int Id { get; set; }
        [DataMember]
        public string Name { get; set; }

        public drUser()
        {
        }
    }</span>

 

 

 

 

以下是对数据库增删改查的使用:

 

           //查询出所有的用户信息
            List<drUser> list = ORMHelper.GetListBySQL<drUser>("select * from user", dbResource.TestDataDBSource);

            //根据sql语句查询出用户
            try
            {
                drUser user1 = ORMHelper.GetModelBySQL<drUser>("select * from user where id = 2", dbResource.TestDataDBSource);
                MessageBox.Show(user1.Name);
            }
            catch
            {
                MessageBox.Show("this is a exception");
            }

            //通过SQL语句修改个人的信息
            ORMHelper.UpdateBySQL("update user set Name='abc' where id=2", dbResource.TestDataDBSource);

            drUser user = new drUser();
            user.Id = 1;
            user.Name = "daaa";
            //根据实体对象更新一条数据
            ORMHelper.UpdateModelById<drUser>(user, dbResource.TestDataDBSource);

            //根据id删除用户
            drUser user2 = ORMHelper.GetModelBySQL<drUser>("select * from user where id = 2", dbResource.TestDataDBSource);
            ORMHelper.DeleteModelById<drUser>(user2, dbResource.TestDataDBSource);

            //根据where条件删除用户
            //ORMHelper.DeleteModel<drUser>("Id > 3", dbResource.TestDataDBSource);

            List<drUser> alist = new List<drUser>();
            for (int i = 4; i < 10; i++) {
                drUser duser = new drUser();
                duser.Id = i;
                duser.Name = "aaa"+i;
                alist.Add(duser);
                 
            }

            //添加一组数据  批量插入数据库
            ORMHelper.InsertList<drUser>(alist,dbResource.TestDataDBSource);
           
            //根据model实体添加一条记录
            drUser user3 = new drUser();
            user3.Name = "dafa";
            int j = 18;
            ORMHelper.InsertModel<drUser>(user3, out j, dbResource.TestDataDBSource, false);

 

 

 

http://www.qcdest.com/bbs/IT/20151113616.html

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对象关系映射架构(DBFramework)及代码生成器源码 一、使用对象关系映射组件Kenly.DBFramework.dll不用编写任何SQL或者存储过程即可实现下列功能: 1、数据表、视图和存储过程与对象之间的转换。 2、数据表、视图的自定义条件查询。 3、数据表、视图的分页查询。 4、根据ID、主键或自定义条件对数据表进行增、删、改操作。 5、实现一对一、一对多、多对一和多对多的关系映射。 6、支持单个对象和多个对象之间的事务控制。 7、支持查询结果排序。 8、支持查询表达式生成。 9、支持延迟加载。 二、代码生成器 1、根据指定的数据库连接,自动生成数据表、视图和存储过程对应的对象代码(C#代码)。 2、自动生成相关的工程文件,生成完整的业务层项目文件。 3、可以帮助生成自定义查询方法。 4、支持SQLServer2000、SQLServer2005和Oracle代码生成插件,支持插件扩展。 提供 1、对象关系映射组件: Kenly.DBFramework.dll 2、代码生成器源码:CodeHelper。 3、代码生成器插件源码(支持SQLServer2000、SQLServer2005和Oracle):Plugin。 4、使用手册:DBFramework.Manual V4.5.3.pdf。 主要API: public abstract class ViewGateway where T: new() { // Methods static ViewGateway(); protected ViewGateway(); protected static int Count(); protected static int Count(string condition); protected static List CountGroup(string groupBy); protected static List CountGroup(string condition, string groupBy); public static List CreateInstances(int count); protected static List Distinct(string columnName); protected static List Distinct(string columnName, string condition); protected static List Distinct(string columnName, string condition, bool ignoreNull); protected static bool Exists(string condition); public bool ExistsById(); public bool ExistsByPK(); protected static List Find(PagingArg pagingArg, params string[] propertyNames); protected static List Find(string condition, params string[] propertyNames); protected static List Find(PagingArg pagingArg, bool sqlServer2000, params string[] propertyNames); protected static List Find(string condition, PagingArg pagingArg, params string[] propertyNames); protected static List Find(string condition, PagingArg pagingArg, bool sqlServer2000, params string[] propertyNames); protected static List FindAll(params string[] propertyNames); protected static void FindTop(T firstOne); protected static List FindTop(int topCount, params string[] propertyNames); protected static void FindTop(string condition, T firstOne); protected static List FindTop(string condition, int topCount, params string[] propertyNames); protected static void InitializeGateway(GatewayConfig config); protected static void InitializeGateway(DatabaseType dbType, string connectionString); protected void InitializeInstance(T entity); protected static object Max(string columnName); protected static object Max(string columnName, string condition); protected static List MaxGroup(string columnName, string groupBy); protected static List MaxGroup(string columnName, string condition, string groupBy); protected static object Min(string columnName); protected static object Min(string columnName, string condition); protected static List MinGroup(string columnName, string groupBy); protected static List MinGroup(string columnName, string condition, string groupBy); protected static DataTable Query(PagingArg pagingArg, params string[] propertyNames); protected static DataTable Query(string condition, params string[] propertyNames); protected static DataTable Query(PagingArg pagingArg, bool sqlServer2000, params string[] propertyNames); protected static DataTable Query(string condition, PagingArg pagingArg, params string[] propertyNames); protected static DataTable Query(string condition, PagingArg pagingArg, bool sqlServer2000, params string[] propertyNames); protected static DataTable QueryAll(params string[] propertyNames); protected static DataTable QueryTop(int topCount, params string[] propertyNames); protected static DataTable QueryTop(string condition, int topCount, params string[] propertyNames); public ArrayList RetrieveAssociations(); public ArrayList RetrieveAssociations(Type elementType); public ArrayList RetrieveAssociations(params Type[] elementTypes); public void RetrieveById(); public void RetrieveByPK(); protected internal virtual void RetrieveBySql(string sql); public void ShadowCopyTo(object targetEntity); public void ShadowCopyTo(T targetEntity); protected static double Sum(string columnName); protected static double Sum(string columnName, string condition); protected static List SumGroup(string columnName, string groupBy); protected static List SumGroup(string columnName, string condition, string groupBy); public static string ToColumnName(string propertyName); public static T ToObject(DataRow adaptedRow); public static List ToObjects(DataTable adaptedTable); public static List ToObjects(DataRow[] adaptedRows); public static string ToPropertyName(string columnName); public static DataTable ToTable(IList entities); public static DataTable ToTable(params T[] entities); public static DataTable ToTable(bool isAdapted, params T[] entities); public static DataTable ToTable(bool isAdapted, IList entities); // Properties protected internal static string CommandText { get; } protected internal static GatewayConfig Config { get; } internal T Entity { get; set; } public object EntityId { get; } public object PrimaryKey { get; } protected static Order SortedOrder { get; set; } } public abstract class TableGateway : ViewGateway where T: TableGateway, new() { // Methods static TableGateway(); protected TableGateway(); public int AddNew(); public static int AddNew(IList entities); public static int AddNew(T entity); public int AddNew(bool returnIdentity); public static int AddNew(T entity, bool returnIdentity); public static int AddNew(IList entities, out Transaction transaction); public static int AddNew(IList entities, bool returnIdentity); public static int AddNew(T entity, out Transaction transaction); public static int AddNew(IList entities, bool returnIdentity, out Transaction transaction); public static int AddNew(T entity, bool returnIdentity, out Transaction transaction); public IDbTransaction BeginTransaction(); public IDbTransaction BeginTransaction(IsolationLevel isolationLevel); public IDbTransaction BeginTransaction(double activeTime); public IDbTransaction BeginTransaction(IsolationLevel isolationLevel, double activeTime); public bool Commit(); protected static int Delete(string condition); protected static int Delete(string condition, out Transaction transaction); public int DeleteById(); public static int DeleteById(T entity); public static int DeleteById(IList entities); public static int DeleteById(IList entities, out Transaction transaction); public static int DeleteById(T entity, out Transaction transaction); public int DeleteByPK(); public static int DeleteByPK(T entity); public static int DeleteByPK(IList entities); public static int DeleteByPK(IList entities, out Transaction transaction); public static int DeleteByPK(T entity, out Transaction transaction); protected void OnPropertyChanged(MethodBase propertyMethod); protected void OnPropertyChanged(string propertyName); protected internal override void RetrieveBySql(string sql); public bool Rollback(); protected static int Update(T entity, string condition); protected static int Update(T entity, string condition, out Transaction transaction); public int UpdateById(); public static int UpdateById(IList entities); public static int UpdateById(T entity); public static int UpdateById(T entity, out Transaction transaction); public static int UpdateById(IList entities, out Transaction transaction); public int UpdateByPK(); public static int UpdateByPK(IList entities); public static int UpdateByPK(T entity); public static int UpdateByPK(IList entities, out Transaction transaction); public static int UpdateByPK(T entity, out Transaction transaction); // Properties public bool Changed { get; } public List ChangedPropertyNames { get; } } public class StoredProcedure : IStoredProcedure { public bool BeginTransaction(); public void CloseReader(IDataReader reader); public bool Commit(); public DataSet ExecuteDataSet(); public DataTable ExecuteDataTable(); public DataTable ExecuteDataTable(); public List ExecuteEntity(); public int ExecuteNonQuery(); public IDataReader ExecuteReader(); public object ExecuteScalar(); protected static void InitializeGateway(GatewayConfig config); protected static void InitializeGateway(DatabaseType dbType, string connectionString); protected void InitializeInstance(T entity); public bool Rollback(); } public class AggregateEntity where T: AggregateEntity, new() { public static List Execute(); protected static List Execute(string condition); public static DataTable ExecuteDataTable(); protected static DataTable ExecuteDataTable(string condition); protected static void InitializeGateway(GatewayConfig config); protected static void InitializeGateway(DatabaseType dbType, string connectionString); // Properties protected static Order SortedOrder { get; set; } } public static class EntityMapper { // Methods public static void AdaptToDatabase(DataTable adaptedTable); public static void AdaptToEntity(DataTable rawTable); public static void CopyToEntities(IList entities, IList adaptedRows); public static void CopyToEntities(IList entities, DataTable adaptedTable); public static void CopyToEntity(T entity, DataRow row); public static List CreateEntities(int count); public static DataTable CreateTable(); public static DataTable CreateTable(bool isAdapted); public static string ToColumnName(string propertyName); public static List ToEntities(IList adaptedRows); public static List ToEntities(DataTable table); public static T ToEntity(DataRow adaptedRow); public static string ToPropertyName(string columnName); public static DataTable ToTable(IList entities); public static DataTable ToTable(params T[] entities); public static DataTable ToTable(bool isAdapted, params T[] entities); public static DataTable ToTable(bool isAdapted, IList entities); } public static class EntityUtility { // Methods public static List Inherit(IList entities); public static T Inherit(object entity); public static T Inherit(Tbase baseEntity, TransformAction method); public static List Inherit(IList baseEntities, TransformAction method); public static void ShadowCopy(IList targetEntities, IList sourceEntities); public static void ShadowCopy(object targetEntity, object sourceEntity); }
摘要:VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】是一款专门为.Net数据库程序开发量身定做的(ORM框架)代码生成工具,所生成程序代码基于面向对象、分层架构、ORM及反射+工厂设计模式等。支持.Net1.1及以上版本,可用于Oracle、SqlServer、Sybase、DB2、MySQL、Access、SQLite、PostgreSQL、DM(达梦)、PowerDesigner文件、Informix、Firebird、MaxDB、Excel等和OleDb、ODBC连接的数据库并可自定义,详见文档及安装文件的示例和工具的帮助文档。 关键字: VB/C#.Net实体代码生成工具 实体代码生成工具 EntitysCodeGenerate 预期读者: 软件开发及相关人员 难度等级: 中 当前版本: 4.3 目 录 1 引言 3 2 内容 4 2.1 ORM框架的实现:VB/C#.Net实体代码生成工具(EntitysCodeGenerate) 4 2.2 在开发中的实际应用 5 2.2.1 单个实体对象的数据库操作 6 1、获取一个实体对象信息 6 2、插入一个实体对象信息 6 3、更新一个实体对象信息 6 4、保存一个实体对象信息 6 5、删除一个实体对象信息 7 6、取得实体映射表数值字段的最大值+1 7 2.2.2 多个实体对象的数据库操作 7 1、实体集对象的使用 7 2、结合事务处理 7 2.2.3 数据查询及通用DML操作 9 1、 常用实体对象查询 9 2、 ORM结构化查询 9 (1)、Select查询 10 (2)、From连接查询 10 (3)、Where语句的Condition条件 11 (4)、Order By排序功能 11 (5)、Group By分组条件及排序 12 (6)、结合事务处理的功能 14 3、Delete删除 15 4、Update更新 15 5、Insert插入 16 2.2.4 DbCore+SQL/存储过程 17 1、DbCore+SQL 17 2、DbCore+存储过程 19 2.2.5 Extend辅助扩展功能 20 1、TableHelp辅助扩展 20 2、CommonHelp常用方法扩展 22 2.2.6 ORM的分析及与Xml的交互 22 1、ORM的分析 22 2、与XML的交互 23 3 结束语 23 4 相关下载地址 24 http://www.skycn.com/soft/53715.html http://download.enet.com.cn/html/030212009031901.html http://www.newhua.com/soft/98941.htm http://www.duote.com/soft/32643.html http://www.crsky.com/soft/25626.html http://download.csdn.net/source/3030634 http://qun.qq.com/air/#60873348/share http://blog.csdn.net/chutao http://lxchutao.blog.163.com http://hi.baidu.com/lxchutao http://download.enet.com.cn/eblog/blog/htm/uid_21280.html

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值