博客园 Arming 的 XPO学习二--Attribute的总结

转载 2005年04月23日 00:08:00

原文:XPO学习二--Attribute的总结  作者: Arming

十二、对Attribute的总结:

              应该看到,整个XPO框架中,Attribute使用的相当频繁,可以列出常用的:

             

         [Aggregated]   没有参数

              作用于a property or a field,并且只能是持久类的引用或者XPCollection.

              实现两个持久类的级联删除的功能。

        

[Association("PersonAddresses", typeof (Address))]

     作用于a property or a field

     实现两个持久类的级联关系

     参数:1、关联的名称;2、关联的持久类类型(但引用指明持久类型时,可以省略)

         

         [MapTo("T_Person")]

              作用于持久类或a property or a field

              作用于持久类时:指定持久类映射的表名称。如果没有指定,默认的表名就是类名。

              作用于propertyfield时:表的列名称。

              参数是表名或列名,是区分大小写的。

        

         [Persistent("CreatedOn")] 强制映射字段

              作用于a property or a field

XPO一般只对持久类中的可写propertypublic field进行持久化操作。因此对只读的field可以加上该特性进行强制持久化。

参数:表名(可选)

        

[NonPersistent]

              作用于a class, property or a field

                     指明不对类或property,field进行持久化操作。

              参数无。

        

[DbType]

              指定列创建时使用的数据类型。

              参数:字符串的数据类型表示。

    

[MapInheritance(MapInheritanceType.OwnTable)]

              作用于持久类。

              两个持久类是继承关系时,持久信息的存储方式。

              参数:

                   MapInheritanceType.OwnTable :各自独立的表,分别存储独有部分。

                   MapInheritanceType.ParentTable :都在父表存储。

        

         [Delayed("document")]

              只能作用于Property

              延迟数据装载,当持久类构造时并不装载数据,只是property首次被访问时才装载。

              和类XPDelayedProperty结合使用才能实现延迟装载的功能。

              参数:引用的XPDelayedProperty 类型field 名称。

 

         [Size(SizeAttribute.Unlimited)] 数据长度

              作用范围a property or a field

指定映射的表字段长度。只是当创建字段时才体现。当字段已经存在,XPO此时不会检查该值。

              参数:数值的长度或者SizeAttribute.Unlimited(不限制长度)

                     可以不指定。如果是string,默认是100

             

         [Key ] [Key(true)][Key(AutoGenerate = true)] 

作用于a property or a field

指定主键。每个持久类都需要一个指定为keypropery or fieldXPObjectXPBaseObject的一个明显差别就是XPObject已有一个OId主键

参数:bool型(可选)。是否由XPO自动生成键值(IntGUID)。默认是false

        

         [Indexed]

              作用于a property or a field

                     指定索引。默认情况下改索引是非唯一索引。

              没有构造参数。但可以通过set来设置为唯一索引[IndexedUnique=true]

 

         [OptimisticLocking(false)] 

              作用于持久类。

        是否乐观锁定(感谢format 的指错)。如果锁定,修改后提交时,XPO会检查原始数据是否已经被改变,而不是who lastest who winXPO在持久类映射的表类加一个系统字段“OptimisticLockField”,显然是用来标记状态的。因此如果是映射到视图时,要显式设置为不锁定。

              参数:bool值(可选,默认是true

 

         [ValueConverter(typeof(实现转换接口(抽象类ValueConverter)的类))] 

              作用于property

值和类型转换,挺有意思的一个功能。从数据库提取值和保存值都可以作一个转换工作。

        

         [NullValue("")]

              作用于简单数据类型的a property or field

                     指定对应库中值为null时,持久类中对应的数据。反之也是。

              参数:根据不同的数据类型,引入不同的参数。看例子比较方便:

     本想只列出常用的,但看看代码,就差两个就列完了。
      [
ExplicitLoading]

     [MemberDesignTimeVisibility]

(未完)

         [Aggregated]   没有参数

              作用于a property or a field,并且只能是持久类的引用或者XPCollection.

              实现两个持久类的级联删除的功能。

        

[Association("PersonAddresses", typeof (Address))]

     作用于a property or a field

     实现两个持久类的级联关系

     参数:1、关联的名称;2、关联的持久类类型(但引用指明持久类型时,可以省略)

         

         [MapTo("T_Person")]

              作用于持久类或a property or a field

              作用于持久类时:指定持久类映射的表名称。如果没有指定,默认的表名就是类名。

              作用于propertyfield时:表的列名称。

              参数是表名或列名,是区分大小写的。

        

         [Persistent("CreatedOn")] 强制映射字段

              作用于a property or a field

XPO一般只对持久类中的可写propertypublic field进行持久化操作。因此对只读的field可以加上该特性进行强制持久化。

参数:表名(可选)

        

[NonPersistent]

              作用于a class, property or a field

                     指明不对类或property,field进行持久化操作。

              参数无。

        

[DbType]

              指定列创建时使用的数据类型。

              参数:字符串的数据类型表示。

    

[MapInheritance(MapInheritanceType.OwnTable)]

              作用于持久类。

              两个持久类是继承关系时,持久信息的存储方式。

              参数:

                   MapInheritanceType.OwnTable :各自独立的表,分别存储独有部分。

                   MapInheritanceType.ParentTable :都在父表存储。

        

         [Delayed("document")]

              只能作用于Property

              延迟数据装载,当持久类构造时并不装载数据,只是property首次被访问时才装载。

              和类XPDelayedProperty结合使用才能实现延迟装载的功能。

              参数:引用的XPDelayedProperty 类型field 名称。

 

         [Size(SizeAttribute.Unlimited)] 数据长度

              作用范围a property or a field

指定映射的表字段长度。只是当创建字段时才体现。当字段已经存在,XPO此时不会检查该值。

              参数:数值的长度或者SizeAttribute.Unlimited(不限制长度)

                     可以不指定。如果是string,默认是100

             

         [Key ] [Key(true)][Key(AutoGenerate = true)] 

作用于a property or a field

指定主键。每个持久类都需要一个指定为keypropery or fieldXPObjectXPBaseObject的一个明显差别就是XPObject已有一个OId主键

参数:bool型(可选)。是否由XPO自动生成键值(IntGUID)。默认是false

        

         [Indexed]

              作用于a property or a field

                     指定索引。默认情况下改索引是非唯一索引。

              没有构造参数。但可以通过set来设置为唯一索引[IndexedUnique=true]

 

         [OptimisticLocking(false)] 

              作用于持久类。

        是否乐观锁定(感谢format 的指错)。如果锁定,修改后提交时,XPO会检查原始数据是否已经被改变,而不是who lastest who winXPO在持久类映射的表类加一个系统字段“OptimisticLockField”,显然是用来标记状态的。因此如果是映射到视图时,要显式设置为不锁定。

              参数:bool值(可选,默认是true

 

         [ValueConverter(typeof(实现转换接口(抽象类ValueConverter)的类))] 

              作用于property

值和类型转换,挺有意思的一个功能。从数据库提取值和保存值都可以作一个转换工作。

        

         [NullValue("")]

              作用于简单数据类型的a property or field

                     指定对应库中值为null时,持久类中对应的数据。反之也是。

              参数:根据不同的数据类型,引入不同的参数。看例子比较方便:

     本想只列出常用的,但看看代码,就差两个就列完了。
      [
ExplicitLoading]

     [MemberDesignTimeVisibility]

(未完)

XPO学习系列3--条件对象

XPO的条件相关类。        XPO的条件对象用来生成数据筛选条件,实际就是SQL语句条件语法树(条件表达式的组合)的对象表示方法。 一、主要相关类: 1、继承于抽象类CriteriaOp...

contentprovider的学习实例总结(此文为转载来自博客园)

工作中遇到了contentprovider数据共享机制,下面来总结一下: 一、ContentProvider简介        当应用继承ContentProvider类,并重写该类用于提供数据和存...

简二毛总结-数值分析

  • 2011年11月14日 15:12
  • 427KB
  • 下载

CCNA笔记-CCNA认证学习总结

  • 2009年09月22日 14:15
  • 85KB
  • 下载

关于多线程的几点总结(博客园迁移)

关于线程 synchronized关键字:  不能用在变量和构造函数上  放在方法上面,锁定的是对象,放在静态方法上锁定的是类  不应该锁定常量,比如String等类型因为程序中这个对象难免还会...
  • js_sky
  • js_sky
  • 2017年05月08日 22:44
  • 115

转自博客园-Nerxious大神的对于匿名内部类的总结

java中的匿名内部类总结 匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口...

学习博客园开源代码笔记(一)

学习别人写的项目是一个不错的学习方法,地址:https://github.com/togayther/react-native-cnblogs 看别人代码的时候可能会遇到各种问题,这里做下记录也希望大...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:博客园 Arming 的 XPO学习二--Attribute的总结
举报原因:
原因补充:

(最多只允许输入30个字)