您的位置:首页 > 其它

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

2011-11-14 21:06 369 查看
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实际表结构为
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: