(DevExpress2011 学习)XPO 学习之2 --数据记录增 删 改 与继承
4. 数据记录增 删 改
如果持久性对象有删除延迟属性,Delete方法不会实际删除数据表里德记录. 代替的,它只是对该记录做了删除的标记,以后你可以使用Session.PurgeDeletedObjects删除. 或者你可以清楚这些删除标记,这些对象不会被清楚. 如果你要保持这种删除状态,使用Save方法保存对象.
如上例 : TitleType.Delete();
物理删除 清除所有被标记软删除的记录
Session.DefaultSession.PurgeDeleteObjects();
4.2 增加
{
TitleType myType = new TitleType(ComSession.DBSession); // ComSession.DBSession 是自定义的Session
myType.typeName = "类型名称";
myType.Save();
}
4.3 修改
myType.typeName = "被改的名称";
myType.Save()
5. 获取SQL 执行结果
Session.ExecuteQuery 和Session.ExecuteSproc方法返回它们执行的结果SelectedData对象实例. 这个数组中包含SelectStatementReslut对象,每个SelectStatementResult项包含相对的SELECT 选择命令执行的SQL Query结果或者是存储过程执行结果. SelectStatementResult 项目提供SelectStatementResult.Rows属性,它允许你去访问每个SeelctStatementResultRow对象的行结果. 每个SelectStatementResult对象有一个values属性,为访问每个不同列中的行结果提供值.
foreach (SelectStatementResultRow row in sData.ResultSet[0].Rows)
Console.WriteLine(row.Values[0]);
6. 继承
XPO提供 2种通用的关系数据库继承映射解决方案
. 单表继承 – 将所有表层次映射成单表
.类表继承—映射每个类为它们的表
我们新建一个TitleType的父类
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类改动一下如下
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实际表结构为