`

手把手教你写ORM(六)

阅读更多

最近越来越不知道该吃什么了。唉。

现在到了比较激动的地方了,ORM,说白了最主要的工作就是将对象和数据库表格的映射建立起来。
这里我们就不用XML文件来配置了,第一会使配置文件结构变复杂加大解析难度,第二我来看看另外一种做映射的方法。

这里介绍一下.NET的Attribute,在早些时候被翻译作属性,和property混淆了。现在一般都翻译为特性或特征,它可以给一个类或者类的成员附加一些额外的特征或者功能。在.NET里面的System.Arribute作为其基类,所有继承自他的,并且类名以Attribute结尾的类型都可以作为Attribute实用,这里有一个约束,定义的时侯类名要以Attribute结尾,但是使用的时候要去掉Attibute。.NET类库预定义了很多的特性来实现很多的功能,这里我们通过Attribute类来标示类成员的特性,并且通过反射来获取来标示类成员与数据库的映射。

首先我们通过一个例子来看看Attribute的特性


执行结果自然是一个异常,异常的message是error:can not run this method!

ok,现在是否明白了它的工作原理?还有点晕?晕不要紧,做了再说。

class TestAttribute:System.Attribute
{
    public TestAttribute(string message)
    {
        throw new Exception("error:"+message);
    }
}

class Tester
{
    [Test("Can not run this method!")]
    public void Cannotrun()
    {
    }

    public static Main(sting[] args)
    {
        Tester t=new Tester();
        t.Cannotrun();
    }
}

我们现在就是来构造一个Attribute的类来存储一个属性的类型,长度,映射字段等数据

 

namespace Alexander.Xbase.Interface
{
    [AttributeUsage(AttributeTargets.All, AllowMultiple 
= true)]
    
public class ParamAttribute:Attribute
    
{
        
private string _parameterType;

        
public string ParameterType
        
{
            
get return _parameterType; }
            
set { _parameterType = value; }
        }

        
private int _parameterLength;

        
public int ParameterLength
        
{
            
get return _parameterLength; }
            
set { _parameterLength = value; }
        }

        
private string _srccolumn;

        
public string Srccolumn
        
{
            
get return _srccolumn; }
            
set { _srccolumn = value; }
        }


        
public ParamAttribute(string ptype, int len)
        
{
            _parameterType 
= ptype;
            _parameterLength 
= len;
            
//throw new Exception("can not use");
        }

        
public ParamAttribute(string ptype, int len,string src)
        
{
            _parameterType 
= ptype;
            _parameterLength 
= len;
            _srccolumn 
= src;
            
//throw new Exception("can not use");
        }


    }

}

使用的时候
定义一个实体类:
class tb
    
{
        
private string _aaa;

        [Param(
"NChar",10)]
        
public string aaa
        
{
            
get return _aaa; }
            
set { _aaa = value; }
        }

        
private string _bbb;

        [Param(
"NChar"10)]
        
public string bbb
        
{
            
get return _bbb; }
            
set { _bbb = value; }
        }

    }

这样子就把映射的类型,长度都存储到特征里面。

To be continue  太累了,今晚休息了
分享到:
评论

相关推荐

    手写ORM框架笔记.txt

    手写ORM框架笔记

    手写orm

    NULL 博文链接:https://fangyong2006.iteye.com/blog/746016

    手写ORM框架.java

    博文资源

    一个简单的JavaORM框架寂寞消遣之作可供学习参考只有几百行代码。

    一个简单的Java ORM框架,如果你是新手,对MVC框架的实现感兴趣的话,可以看看,一共也就几个类非常简单。

    自己写的orm辅助类

    自己写的orm辅助类 .定义实体的特性(如对应的表名 主键名 属性对应的列名 实体和数据库对象的相互转换 简单实体的 CRUD操作 QQ交流群60168829 欢迎C# ASP.NET 和SQL新手 老手 高手加入 谢谢

    自己写的ORM

    自己写的ORM,看看大家给几分

    手写ORM框架

    这是一个手写的ORM框架,类似于Mybaties框架,可以对数据库进行建表、增、删、查、改操作,每个功能都重载了多种方法,以满足用户需求。此外,还有缓存功能,第二次进行同样的查找操作时将不会调用数据库,而是在...

    Java8应用封装,手写ORM,LOG,framework

    ##公用资源 ###敏捷第一,提供丰富语法糖,方法化,片段化 #####手写容器 #####手写ORM #####手写Log #####自动化配置 #####常用工具类 #####大量回调处理

    Python 手写ORM-我的一个数据库访问工具

    ORM所生成的代码一般不太可能写出很高效的算法,在数据库应用上更有可能会被误用,主要体现在对持久对象的提取和和数据的加工处理上,如果用上了ORM,程序员很有可能将全部的数据提取到内存对象中,然后再进行过滤和...

    自写的access orm框架

    自己写的操作ACCESS 数据库的orm框架,支持添加、修改、删除、分页查询等,方便快捷

    .NET ORM架构源码

    基于ORM模式开发的.NET框架,可在框架内自由添加想要的功能

    手写简易版ORM框架(仿mybatis)

    自己手写的一个半自动框架,里面有运行例子,部分代码从mybatis中抽出

    自己动手写轻量级ORM(C#)

    最近在看反射,突然想写一个ORM工具,要轻量级的,不要配置文档,先不管效率,就是一个小工具,在项目初期方便挂数据库。 我的目标就是在数据库中建个表,在项目中写个模型,然后用上这个ORM工具,就能实现数据库的...

    ORM框架ORM框架ORM框架ORM框架

    能实现基本的数据库操作能实现基本的数据库操作

    Flunet ORM 教程3

    轻量级.Net ORM FluentData教程,分为三个压缩包,下载时请注意! 1fluentdata ORM .7z 2fluentdata ORM.7z 3fluentdata ORM.7z

    Flunet ORM 教程2

    轻量级.Net ORM FluentData教程,分为三个压缩包,下载时请注意! 1fluentdata ORM .7z 2fluentdata ORM.7z 3fluentdata ORM.7z

    一个自己写的ORM原理的映射实例

    一个自己写的ORM映射实例,他是ORM映射的彻底的底层实现,真正的ORM映射的原理

    c# DB操作ORM框架

    .NET ORM框架,基于Dapper效率高,包括根据条件Update,Delete有修改字段,各种单表查寻,操作简单。 支持分库,简单分页,暂不支持分表(想办法支持中,有头续的可以联系)。联系:else-love@qq.com

    自个写的.NET ORM带例子VS2010

    自个写的.NET ORM带例子VS2010

    ORM思想的深入学习ORM.zip

    这里面包括了Hibernate和MyBatis的实现ORM思想的原理,以及讲解了什么是ORM思想。仿照Hibernate自定义了一个简单的增删改查的ORM框架,还有测试代码。

Global site tag (gtag.js) - Google Analytics