zoukankan      html  css  js  c++  java
  • (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实际表结构为
     

  • 相关阅读:
    Ubuntu配置sublime text 3的c编译环境
    ORA-01078错误举例:SID的大写和小写错误
    linux下多进程的文件拷贝与进程相关的一些基础知识
    ASM(四) 利用Method 组件动态注入方法逻辑
    基于Redis的三种分布式爬虫策略
    Go语言并发编程总结
    POJ2406 Power Strings 【KMP】
    nyoj 会场安排问题
    Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.
    Java的String、StringBuffer和StringBuilder的区别
  • 原文地址:https://www.cnblogs.com/meetweb/p/2248908.html
Copyright © 2011-2022 走看看