(DevExpress2011 学习)XPO 学习之2 --数据记录增 删 改 与继承

4.       数据记录增

4.1      Delete Method 删除

如果持久性对象有删除延迟属性,Delete方法不会实际删除数据表里德记录. 代替的,它只是对该记录做了删除的标记,以后你可以使用Session.PurgeDeletedObjects删除. 或者你可以清楚这些删除标记,这些对象不会被清楚. 如果你要保持这种删除状态,使用Save方法保存对象.

如上例 : TitleType.Delete(); 

 

物理删除 清除所有被标记软删除的记录

Session.DefaultSession.PurgeDeleteObjects();

4.2      增加

private  void BuildTable()
        {
            TitleType  myType =  new TitleType(ComSession.DBSession);  //  ComSession.DBSession 是自定义的Session  

            myType.typeName =  " 类型名称 ";

            myType.Save();
        }

4.3     修改

TitleType myType = (TitleType) this.gridView1.GetRow(myrow);  // 找到对应行记录
myType.typeName =  " 被改的名称 ";
myType.Save()

5.       获取SQL 执行结果

Session.ExecuteQuery Session.ExecuteSproc方法返回它们执行的结果SelectedData对象实例. 这个数组中包含SelectStatementReslut对象,每个SelectStatementResult项包含相对的SELECT 选择命令执行的SQL Query结果或者是存储过程执行结果. SelectStatementResult 项目提供SelectStatementResult.Rows属性,它允许你去访问每个SeelctStatementResultRow对象的行结果. 每个SelectStatementResult对象有一个values属性,为访问每个不同列中的行结果提供值.

SelectedData sData = ComSession.DBSession.ExecuteQuery( " select typeName,OID from TitleType ");
  foreach (SelectStatementResultRow row  in sData.ResultSet[ 0].Rows)
 Console.WriteLine(row.Values[ 0]);

6.        继承

XPO提供 2种通用的关系数据库继承映射解决方案

. 单表继承将所有表层次映射成单表

.类表继承映射每个类为它们的表

 

我们新建一个TitleType的父类   

public  class TitleTypeFather : XPObject {

                    public TitleTypeFather() :  base() {

                   }

                    public TitleTypeFather(Session session) :  base(session) {
                   }

                    public  override  void AfterConstruction() {
                            base.AfterConstruction();
                            //  Place here your initialization code.
                   }

         string _testmemo;
        [Size( 50), NullValue( " 123 ")]
        public  string TestMemo
        {
           set
            { SetPropertyValue< string>( " TestMemo "ref _testmemo, value);            }
            get

           {  return _testmemo; }
        }
     }

 

然后将原来的TitleType类改动一下如下


[MapInheritance(MapInheritanceType.ParentTable)]
   public  class TitleType : TitleTypeFather {
        string _typeName;
        [Size( 50)]
        public  string typeName
        {
            set
            { SetPropertyValue< string>( " typeName "ref _typeName, value); }
            get
            {   return _typeName;                }
        }

         string _memo;
        [Size( 50),NullValue( " 123 ")]
        public  string Memo
        {
            set
            { SetPropertyValue< string>( " Memo "ref _memo, value); }
            get
            {  return _memo; }
        }
        [Persistent ]
        DateTime _DateTime;
        public DateTime date
        {
            get {
                _DateTime = DateTime.Now;
                return _DateTime;
            }
        }

     public TitleType() :  base() {
                   }

     public TitleType(Session session)
            :  base(session)
        {
         }

          base.AfterConstruction();
        //  Place here your initialization code.
     }
}

在实际操作中,只要你引用了TitleTypeFather,它自动将子类的属性当自己的属性直接使用

看看数据库中 TitleTypeFather 实际表结构为
 

转载于:https://www.cnblogs.com/meetweb/archive/2011/11/14/2248908.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值