您的位置:首页 > 其它

【开源系列】三国演义LBS (十)源码:ORM框架

2011-05-13 00:47 381 查看

前言

-----------------------------------------------

相关讨论组入口: http://www.pixysoft.net/ (点击进入)





功能简介:

-----------------------------------------------

纯面向对象的数据库操作。

使用动态反射实现Aop拦截,完成ORM操作,性能与ADO.NET一致。

快速入门 -----------------------------------------------

using System;
using System.Collections.Generic;
using System.Text;
using Pixysoft.Framework.XSchEmA;
using Pixysoft.Tools;

namespace Pixysoft.Framework.Noebe.Orm.testdriven
{
class quickstart
{
/// <summary>
/// 部署数据库
/// </summary>
public void test_001()
{
string path = StringFilter.RegularPath(AppDomain.CurrentDomain.BaseDirectory) + "helloworld.mdb";

XSchemaManager.AccessSchema.Schema.DropDatabase(null, path);
XSchemaManager.AccessSchema.Schema.CreateDatabase(null, path);

NoebeConfiguration config = new NoebeConfiguration();
config.DatabaseType = DatabaseType.Access;
config.Filename = path;
NoebeManager.Instances[OrmManager.GLOBAL_FRAMEWORK_ID].Reloads(config);
NoebeManagerAdapter.Instances[OrmManager.GLOBAL_FRAMEWORK_ID].Initializes(NoebeManager.Instances[OrmManager.GLOBAL_FRAMEWORK_ID]);

new OrmSchema().Drop<Person>(config);
new OrmSchema().Commit<Person>(config);
}

/// <summary>
/// 增删改查
/// </summary>
public void test_002()
{
//初始化ORM依赖的持久层

string path = StringFilter.RegularPath(AppDomain.CurrentDomain.BaseDirectory) + "helloworld.mdb";
NoebeConfiguration config = new NoebeConfiguration();
config.DatabaseType = DatabaseType.Access;
config.Filename = path;
NoebeManager.Instances[OrmManager.GLOBAL_FRAMEWORK_ID].Reloads(config);
NoebeManagerAdapter.Instances[OrmManager.GLOBAL_FRAMEWORK_ID].Initializes(NoebeManager.Instances[OrmManager.GLOBAL_FRAMEWORK_ID]);

//创建对象

string carpk = GlobalTimer.Instance.GetGlobalTimeSequence();
Car car = OrmManager.Instance.GetSession().Create<Car>();
car.StringValue = carpk;
OrmManager.Instance.GetSession().Save(car);

List<string> list = new List<string>();
list.Add("1");
list.Add("2");
list.Add("3");

string personpk = GlobalTimer.Instance.GetGlobalTimeSequence();
Person person = OrmManager.Instance.GetSession().Create<Person>();
person.StringValue = personpk;
person.IntValue = 13;
person.StringArray = new string[] { "1", "2", "3" };
person.StringList = list;

person.OrmObject = car;
person.OrmArray = new Car[] { car };
List<Car> ormlist = new List<Car>();
ormlist.Add(car);
person.OrmList = ormlist;
OrmManager.Instance.GetSession().Save(person);

//简易查询

person = OrmManager.Instance.GetQuery().SelectByUpk<Person>(personpk);
Console.WriteLine(person.IntValue);

//右查询 从Person开始查,查询条件是Person.OrmList的所有值。

Console.WriteLine("------------ RIGHT QUERY ------------");
IOrmRightQuery<Person> rightquery = OrmManager.Instance.GetRightQuery<Person>();//第一个范型表示查询起始的对象类型
rightquery.QueryString = "OrmList";
rightquery.OrmObject = person;
foreach (Car qcar in rightquery.Select<Car>()) //第二个范型表示查询结果的类型
{
Console.WriteLine(qcar.StringValue);
}

//左查询 从car开始向左查询,得到拥有这个Car的Person集合。

Console.WriteLine("------------ LEFT QUERY ------------");
IOrmLeftQuery<Person> leftquery = OrmManager.Instance.GetLeftQuery<Person>();
leftquery.QueryString = "OrmList.StringValue = :VALUE";
leftquery.Parameters.Add("VALUE", carpk);
foreach (Person qperson in leftquery.Select())
{
Console.WriteLine(qperson.StringValue);
}
}
}
}

ORM对象声明:

[OrmAlias("IPerson")]
public interface Person
{
[OrmPrimaryKey]
string StringValue { get;set;}
string[] StringArray { get;set;}
List<string> StringList { get;set;}
int IntValue { get;set;}
byte[] BytesValue { get;set;}
Sex EnumValue { get;set;}
Car OrmObject { get;set;}
List<Car> OrmList { get;set;}
Car[] OrmArray { get;set;}
}

[OrmAlias("ICar")]
public interface Car
{
[OrmPrimaryKey]
string StringValue { get;set;}
string[] StringArray { get;set;}
List<string> StringList { get;set;}
int IntValue { get;set;}
byte[] BytesValue { get;set;}
CarWindow OrmObject { get;set;}
List<CarWindow> OrmList { get;set;}
CarWindow[] OrmArray { get;set;}
}

下期预告:

-----------------------------------------------

Pixysoft.Framework.Remoting 远程调用框架。

是web 2.0 快速开发的基础!!!

附件下载

----------------------------------------------- Pixysoft.Framework.Noebe.Orm 打包下载:



http://www.boxcn.net/shared/xqgr3srjx9

SVN:

http://qun.qq.com/air/#95755843/share
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐