Odoo中文社区可以通过以下三个域名访问:shine-it.net , odoocn.org,odoo.net.cn

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

关于ORM实体映射的感想 (Object /Relational Mapper )



  • [size=99px][color=red]转来的,理解下什么是ORM.[/color][/size]

    关于ORM实体映射的感想 (Object /Relational Mapper )
    2005-05-29 njbaige/白鸽 于苏州

    What ORM?
    Object /Relational Mapper
    Why ORM
    一般的数据库访问是建立于传统的数据库访问模型的基础之上,
    即是Connection,Command等对象,通过SQL语句与数据库交互,并返回结果
    现在.NET下面的数据库访问框架已经到了ADO.NET 时代,ADO.NET 的访问方式
    详见MSDN的相关文档,这不是本文讨论的重点。但是要说明的是,在.NET 环境
    下的数据访问,都得要和ADO.NET打交道,那个是最底层得东西,我们今天谈的
    数据库映射框架底层也是基于ADO.NET的访问模式,只是他们进行了很有效的封装
    是得对数据库的操作从传统的SQL模式,转换为基于对象的模式。
    使业务逻辑与数据层分离,减少之间的藕合性,让系统开发对数据库透明
    目前在网络上大家可以找到好几种持久层,其实各个持久层的思想都是相同的,只是在实现的方式上,
    还有一些细节功能上有差异,每个持久层都有独特之处或是不足之处
    How ORM
    实体映射:将数据库中的实体(一般是一张表)映射为类,对数据库的操作就
    直接转换为对这些实体的操作:包括新,增,删,改等。采用实体的操作,会使我们对数据
    库访问时,更方便,减少很多不必要的代码
    关系映射:数据库中多个表之间会有相互的关系,怎样把这些关系也反映到映射好的类中
    这就是关系映射,不过相比实体映射,关系映射实现起来更难,这也是评估不同ORM好坏的
    一个重要因素
    高级查询:在数据库操作中,用得最多的是数据获取(Retrieve)。查询条件也是很多样,会
    有关联查询的情况,获取的结果也是要定制的,而不是简单的每个表的所有字段。
    这点也是ORM实现最关键的地方,各自实现的方式不同,而且有的用起来也很麻烦,不友好。
    感觉还不如直接采用SQL语句来的方便。这点NHibernate继承了Hibernate的长处,采用HQL
    查询语言,功能最为强大。其他的ORM 就不是很方便了。个人觉得还有必要保留SQL语句接
    口,返回Table对象也是有不错的。
    事务处理:在数据可靠性要求很高的时候,需要引入事务。由于ADO.NET 中对事务的支持
    很好,所以在ORM实现起来也是很棒的,一般的框架都支持这样的事务。
    实体类和操作类的生成: ORM说到底就是帮我们生成了一个功能强大的数据库访问类,
    里面包括实体对象类,实体操作类等,实现了这样的思想,在代码生成上也需要友好,方便
    才能为大众所用。所以一个优秀的ORM框架需要搭配一个好的代码生成工具。目前一部分框架都有的,
    支持直接同数据库连接,选择要生成的数据表,直接生成CS文件,编译成DLL文件,直接导入到工程中就能用啦,
    是不是很酷~(不过有的ORM框架需要一些配置文件,也有生成的哦)
    数据访问实现方式:对实体对象的获取,更新保存至数据库,在ORM的底层都需要通过
    连接来实现(不管是SQL连接还是OLEDB 连接,还是ORACLE连接 ),他们实现的方式也有不同
    这决定了我们在代码中的操作方式也不同。一种是通过一个Manage类来实现,就像NHibernate、ORM.NET等,
    这样的有点是连接操作效率更高,公用一个连接操作实体,缺点是我们使用起来不是很方便,
    不是完全符合对象映射的构想,每次操作都得取找那个Manage,麻烦;还有一种是直接放到实体类中,
    也就是每一个实体类中都封装好了Save,del等数据访问方法,要操作直接调用,就不要再去麻烦第三者了~
    目前用过几个ORM框架,下面是主要操作方式的学习笔记:
    一 . ORM.NET 下载URL:[url=www.olero.com/ormweb/index.aspx][color=#0000ff]http://www.olero.com/ormweb/index.aspx[/color][/url]
    一个国外的ORM框架,主要是生成代码工具很酷,才试用的。帮助文件也全,不过为E文的。
    启动工具,连接至SQL Server(好像它只支持SQL Server,用的是System.Data.SqlClient )
    ,显示出数据库中的每一张表和相应的关系,选择要生成的实体对象,配置文件路径和CS类名之后,
    代码就出来了。就一个DLL(外带一个连接配置文件,也可以不用,在代码里面赋值就OK)去看了里面的具体内容,
    实体映射,事务处理是没问题的,在数据的复杂查询上,采用了自定义的一个查询条件类,
    支持很复杂的查询条件(不过感觉开始用起来比较难上手)
    二 SmartPersistenceLayer 下载URL;[url]www.cnblogs.com/tintown/category/12787.html[/url]
    附很详细的帮助文档和实例
    简称SPL,最新版本3.1 , 听棠大哥的作品,也是目前国产最棒的ORM映射框架,以郭先尧的Xxmm.Net为基础做的。
    (不是帮他打广告,而是里面的功能确实很Cool,不过也有不是很完美的地方-感觉)
    支持SQL Server(System.Data.SqlClient)、Access(System.Data.OleDb)、Oracle(System.Data.OracleClient)、
    Informix (ODBC连接方式)
    提供“并发处理”、“异构数据库事务处理”、“多帐套”、“实体克隆”、“Top功能”等解决方案。
    有代码生成工具 SmartRobot
    配置文件:是采用Config/DatabaseMap.xml ,设置数据库的连接参数
    O/R Mapping 采用Config/ClassMap.xml ,设置数据库中表字段和实体类之间的对应关系
    基本的实体操作 :
    实体类继承于EntityObject,具父类为SPL中的一个public abstract类,只要具体的实体类继承后,
    实体类就拥有了Save(),Retrieve(),Delete()的实体操作功能,无需借用Manage类来实现
    如:
    StudentEntity student=new StudentEntity(); //实体化一个学生对象
    //以下进行属性赋值
    //student.Id=1; //此为自动增长,SPL会自动获取
    student.No=” 200401”;
    student.Name=”张三”;
    student.Birthday=DateTime.Parse(“1979-01 -22”);
    student.Grade=2;
    student.Score=580;
    student.Save();
    是不是不用串SQL语句了?
    Criteria(标准)操作:对复杂条件的,返回值为实体对象集合的操作
    采用几个Criteria(标准)对象实现
    RetrieveCriteria(获取标准)
    UpdateCriteria (更新标准)
    DeleteCriteria(删除标准)
    RetrieveCriteria rc=new RetrieveCriteria(typeof(StudentEntity)); //实例化
    Condition c=rc.GetNewCondition(); //实例化一个条件
    c.AddEqualTo(StudentEntity.__GRADE,2); //二年级条件
    c.AddMatchPrefix(StudentEntity.__Name,’刘’); //匹配’刘’字开头
    c.OrderBy(StudentEntity.__NO); //按学号排
    DataTable dt=rc.AsDataTable() ; //以DataTable方式返回

    EntityContainer ec=rc.AsEntityContainer(); //以实体集合的形式返回,然后在集合中操作Entity。
    有点类似RowCollection
    rc.AsEntity(); //返回实体集合中的第一个对象
    rc.Top=20; 可以返回前20条记录哦
    但是在复杂的表间连接,嵌套查询做得不够,听棠大哥解释的是采用数据库中的视图来完成。
    所以我现在对于很复杂的查询,还是采用SQL传递,返回TABLE的方式,这点有待改进。
    不过也是所有ORM要面对的难题哦~
    三 NHibernate 下载URL:[url=nhibernate.sourceforge.net/][color=#0000ff]http://nhibernate.sourceforge.net/[/color][/url]
    国外的一个ORM映射框架。继承了JAVA平台Hibernate的血统,不过功能
    有待完善,但应该算是开源的业内最权威的ORM框架了(不知道是不是沾了Hibernate的光~)
    操作非常全面,规范。
    开发的过程
    1.新建一个将要持久化.Net对象的表
    2.构建一个需要被持久化的.Net类
    3.构建一个可以让NHibernate知道如何持久化对象属性的映射文件
    4.构建一个让NHibernate知道如何连接数据库的配置文件]
    5.使用NHibernate的API
    Nhibernate虽好,但是未提供工具来自动产生schema文件和代码,这是目前比较麻烦的,
    完全手写,包括设置表和.Net类的编写,比较郁闷,所以让很多初学者望而却步,或者在观望中。期待很酷的工具能出现
    这篇关于 Nhibernate的文章写得很好,我就不罗嗦了,要不大家会砸我滴~
    NHibernate快速指南 [url=dev.csdn.net/develop/article/63/63977.shtm][color=#0000ff]http://dev.csdn.net/develop/article/63/63977.shtm[/color][/url]

    据不完全统计,.NET下的ORM 有如下这些,高手们用了发发意见啊~
    [list][li][url=www.objectpersistence.com/][color=#002c99].NET Persistence[/color][/url][/li][li][url=www.bba-italy.com/products/BBADataObjects.aspx][color=#002c99]BBADataObjects[/color][/url][/li][li][url=www.x-tensive.com/Products/DataObjects.NET/][color=#002c99]DataObjects.NET[/color][/url][/li][li][url=www.evaluant.com/en/solutions/dtm/default.aspx][color=#002c99]Data Tier Modeler for .NET[/color][/url][/li][li][url=www.gotdotnet.com/Community/Workspaces/Workspace.aspx?id=b03d0b52-8d32-47a3-bdda-d84e23717d7d==][color=#002c99]DotNorm[/color][/url][/li][li][url=sourceforge.net/projects/eldorado-net/][color=#002c99]Eldorado.NET[/color][/url][/li][li][url=www.borland.com/csharpbuilder/architect/eco/tutorial/][color=#002c99]Enterprise Core Objects (ECO?)[/color][/url][/li][li][url=www.thona-consulting.com/content/products/entitybroker.aspx][color=#002c99]Entity Broker[/color][/url][/li][li][url=www.devexpress.com/products/net/xpo/index.asp][color=#002c99]eXpress Persistent Objects for .NET[/color][/url][/li][li][url=community.fastobjects.com/community_fastobjects_net.htm][color=#002c99]FastObjects.NET[/color][/url][/li][li][url=sourceforge.net/projects/jcframework/][color=#002c99]JC Persistent Framework[/color][/url][/li][li][url=www.llblgen.com/][color=#002c99]LLBLGen Pro[/color][/url][/li][li][url=www.gotdotnet.com/Community/Workspaces/Workspace.aspx?id=f26c3ea6-facb-4ded-9a0b-07ed4e039b79==][color=#002c99]ModelWorks[/color][/url][/li][li][url=sourceforge.net/projects/nhibernate/][color=#002c99]Nhibernate[/color][/url][/li][li][url=www.nolics.net/][color=#002c99]Nolics.NET[/color][/url][/li][li][url=www.gotdotnet.com/Community/Workspaces/Workspace.aspx?id=6bf91dea-dea3-4949-9602-ea1ea32a22b4==][color=#002c99]Norm[/color][/url][/li][li][url=www.norpheme.com/][color=#002c99]Norpheme[/color][/url][/li][li][url=sourceforge.net/projects/objectbroker/][color=#002c99]ObjectBroker[/color][/url][/li][li][url=groups.msn.com/objectspaces][color=#002c99]ObjectSpaces[/color][/url][/li][li][url=www.firestarsoftware.com/products/objectspark.shtml][color=#002c99]ObjectSpark[/color][/url][/li][li][url=www.mongoosesolutions.com/mg/default.aspx][color=#002c99]Objectz.NET[/color][/url][/li][li][url=ojb-net.sourceforge.net/][color=#002c99]OJB.NET[/color][/url][/li][li][url=sourceforge.net/projects/opfnet/][color=#002c99]OPF.Net (Object Persistent Framework)[/color][/url][/li][li][url=www.olero.com/][color=#002c99]ORM.NET[/color][/url][/li][li][url=www.pragmatier.com/][color=#002c99]Pragmatier Data Tier Builder[/color][/url][/li][li][url=www.2lkit.com/Default.aspx?path=products==][color=#002c99]RapTier[/color][/url][/li][li][url=sourceforge.net/projects/sisyphuspf/][color=#002c99]Sisyphus Persistence Framework[/color][/url][/li][li][url=www.alachisoft.com/][color=#002c99]TierDeveloper[/color][/url][/li][li][url=groups.msn.com/objectspaces/general.msnw?action=get_message&mview=0&ID_Message=165&LastModified=4675436390785936871==][color=#002c99]Bob.NET[/color][/url][/li][li][url=www.dotnetpark.com/software.html][color=#002c99]ObjectPersistor.NET[/color][/url][/li][li][url=www.genom-e.com/][color=#002c99]Genome[/color][/url][/li][/list]



  • [size=99px][color=red]转来的,理解下什么是ORM.[/color][/size]

    关于ORM实体映射的感想 (Object /Relational Mapper )
    2005-05-29 njbaige/白鸽 于苏州

    What ORM?
    Object /Relational Mapper
    Why ORM
    一般的数据库访问是建立于传统的数据库访问模型的基础之上,
    即是Connection,Command等对象,通过SQL语句与数据库交互,并返回结果
    现在.NET下面的数据库访问框架已经到了ADO.NET 时代,ADO.NET 的访问方式
    详见MSDN的相关文档,这不是本文讨论的重点。但是要说明的是,在.NET 环境
    下的数据访问,都得要和ADO.NET打交道,那个是最底层得东西,我们今天谈的
    数据库映射框架底层也是基于ADO.NET的访问模式,只是他们进行了很有效的封装
    是得对数据库的操作从传统的SQL模式,转换为基于对象的模式。
    使业务逻辑与数据层分离,减少之间的藕合性,让系统开发对数据库透明
    目前在网络上大家可以找到好几种持久层,其实各个持久层的思想都是相同的,只是在实现的方式上,
    还有一些细节功能上有差异,每个持久层都有独特之处或是不足之处
    How ORM
    实体映射:将数据库中的实体(一般是一张表)映射为类,对数据库的操作就
    直接转换为对这些实体的操作:包括新,增,删,改等。采用实体的操作,会使我们对数据
    库访问时,更方便,减少很多不必要的代码
    关系映射:数据库中多个表之间会有相互的关系,怎样把这些关系也反映到映射好的类中
    这就是关系映射,不过相比实体映射,关系映射实现起来更难,这也是评估不同ORM好坏的
    一个重要因素
    高级查询:在数据库操作中,用得最多的是数据获取(Retrieve)。查询条件也是很多样,会
    有关联查询的情况,获取的结果也是要定制的,而不是简单的每个表的所有字段。
    这点也是ORM实现最关键的地方,各自实现的方式不同,而且有的用起来也很麻烦,不友好。
    感觉还不如直接采用SQL语句来的方便。这点NHibernate继承了Hibernate的长处,采用HQL
    查询语言,功能最为强大。其他的ORM 就不是很方便了。个人觉得还有必要保留SQL语句接
    口,返回Table对象也是有不错的。
    事务处理:在数据可靠性要求很高的时候,需要引入事务。由于ADO.NET 中对事务的支持
    很好,所以在ORM实现起来也是很棒的,一般的框架都支持这样的事务。
    实体类和操作类的生成: ORM说到底就是帮我们生成了一个功能强大的数据库访问类,
    里面包括实体对象类,实体操作类等,实现了这样的思想,在代码生成上也需要友好,方便
    才能为大众所用。所以一个优秀的ORM框架需要搭配一个好的代码生成工具。目前一部分框架都有的,
    支持直接同数据库连接,选择要生成的数据表,直接生成CS文件,编译成DLL文件,直接导入到工程中就能用啦,
    是不是很酷~(不过有的ORM框架需要一些配置文件,也有生成的哦)
    数据访问实现方式:对实体对象的获取,更新保存至数据库,在ORM的底层都需要通过
    连接来实现(不管是SQL连接还是OLEDB 连接,还是ORACLE连接 ),他们实现的方式也有不同
    这决定了我们在代码中的操作方式也不同。一种是通过一个Manage类来实现,就像NHibernate、ORM.NET等,
    这样的有点是连接操作效率更高,公用一个连接操作实体,缺点是我们使用起来不是很方便,
    不是完全符合对象映射的构想,每次操作都得取找那个Manage,麻烦;还有一种是直接放到实体类中,
    也就是每一个实体类中都封装好了Save,del等数据访问方法,要操作直接调用,就不要再去麻烦第三者了~
    目前用过几个ORM框架,下面是主要操作方式的学习笔记:
    一 . ORM.NET 下载URL:[url=www.olero.com/ormweb/index.aspx][color=#0000ff]http://www.olero.com/ormweb/index.aspx[/color][/url]
    一个国外的ORM框架,主要是生成代码工具很酷,才试用的。帮助文件也全,不过为E文的。
    启动工具,连接至SQL Server(好像它只支持SQL Server,用的是System.Data.SqlClient )
    ,显示出数据库中的每一张表和相应的关系,选择要生成的实体对象,配置文件路径和CS类名之后,
    代码就出来了。就一个DLL(外带一个连接配置文件,也可以不用,在代码里面赋值就OK)去看了里面的具体内容,
    实体映射,事务处理是没问题的,在数据的复杂查询上,采用了自定义的一个查询条件类,
    支持很复杂的查询条件(不过感觉开始用起来比较难上手)
    二 SmartPersistenceLayer 下载URL;[url]www.cnblogs.com/tintown/category/12787.html[/url]
    附很详细的帮助文档和实例
    简称SPL,最新版本3.1 , 听棠大哥的作品,也是目前国产最棒的ORM映射框架,以郭先尧的Xxmm.Net为基础做的。
    (不是帮他打广告,而是里面的功能确实很Cool,不过也有不是很完美的地方-感觉)
    支持SQL Server(System.Data.SqlClient)、Access(System.Data.OleDb)、Oracle(System.Data.OracleClient)、
    Informix (ODBC连接方式)
    提供“并发处理”、“异构数据库事务处理”、“多帐套”、“实体克隆”、“Top功能”等解决方案。
    有代码生成工具 SmartRobot
    配置文件:是采用Config/DatabaseMap.xml ,设置数据库的连接参数
    O/R Mapping 采用Config/ClassMap.xml ,设置数据库中表字段和实体类之间的对应关系
    基本的实体操作 :
    实体类继承于EntityObject,具父类为SPL中的一个public abstract类,只要具体的实体类继承后,
    实体类就拥有了Save(),Retrieve(),Delete()的实体操作功能,无需借用Manage类来实现
    如:
    StudentEntity student=new StudentEntity(); //实体化一个学生对象
    //以下进行属性赋值
    //student.Id=1; //此为自动增长,SPL会自动获取
    student.No=” 200401”;
    student.Name=”张三”;
    student.Birthday=DateTime.Parse(“1979-01 -22”);
    student.Grade=2;
    student.Score=580;
    student.Save();
    是不是不用串SQL语句了?
    Criteria(标准)操作:对复杂条件的,返回值为实体对象集合的操作
    采用几个Criteria(标准)对象实现
    RetrieveCriteria(获取标准)
    UpdateCriteria (更新标准)
    DeleteCriteria(删除标准)
    RetrieveCriteria rc=new RetrieveCriteria(typeof(StudentEntity)); //实例化
    Condition c=rc.GetNewCondition(); //实例化一个条件
    c.AddEqualTo(StudentEntity.__GRADE,2); //二年级条件
    c.AddMatchPrefix(StudentEntity.__Name,’刘’); //匹配’刘’字开头
    c.OrderBy(StudentEntity.__NO); //按学号排
    DataTable dt=rc.AsDataTable() ; //以DataTable方式返回

    EntityContainer ec=rc.AsEntityContainer(); //以实体集合的形式返回,然后在集合中操作Entity。
    有点类似RowCollection
    rc.AsEntity(); //返回实体集合中的第一个对象
    rc.Top=20; 可以返回前20条记录哦
    但是在复杂的表间连接,嵌套查询做得不够,听棠大哥解释的是采用数据库中的视图来完成。
    所以我现在对于很复杂的查询,还是采用SQL传递,返回TABLE的方式,这点有待改进。
    不过也是所有ORM要面对的难题哦~
    三 NHibernate 下载URL:[url=nhibernate.sourceforge.net/][color=#0000ff]http://nhibernate.sourceforge.net/[/color][/url]
    国外的一个ORM映射框架。继承了JAVA平台Hibernate的血统,不过功能
    有待完善,但应该算是开源的业内最权威的ORM框架了(不知道是不是沾了Hibernate的光~)
    操作非常全面,规范。
    开发的过程
    1.新建一个将要持久化.Net对象的表
    2.构建一个需要被持久化的.Net类
    3.构建一个可以让NHibernate知道如何持久化对象属性的映射文件
    4.构建一个让NHibernate知道如何连接数据库的配置文件]
    5.使用NHibernate的API
    Nhibernate虽好,但是未提供工具来自动产生schema文件和代码,这是目前比较麻烦的,
    完全手写,包括设置表和.Net类的编写,比较郁闷,所以让很多初学者望而却步,或者在观望中。期待很酷的工具能出现
    这篇关于 Nhibernate的文章写得很好,我就不罗嗦了,要不大家会砸我滴~
    NHibernate快速指南 [url=dev.csdn.net/develop/article/63/63977.shtm][color=#0000ff]http://dev.csdn.net/develop/article/63/63977.shtm[/color][/url]

    据不完全统计,.NET下的ORM 有如下这些,高手们用了发发意见啊~
    [list][li][url=www.objectpersistence.com/][color=#002c99].NET Persistence[/color][/url][/li][li][url=www.bba-italy.com/products/BBADataObjects.aspx][color=#002c99]BBADataObjects[/color][/url][/li][li][url=www.x-tensive.com/Products/DataObjects.NET/][color=#002c99]DataObjects.NET[/color][/url][/li][li][url=www.evaluant.com/en/solutions/dtm/default.aspx][color=#002c99]Data Tier Modeler for .NET[/color][/url][/li][li][url=www.gotdotnet.com/Community/Workspaces/Workspace.aspx?id=b03d0b52-8d32-47a3-bdda-d84e23717d7d==][color=#002c99]DotNorm[/color][/url][/li][li][url=sourceforge.net/projects/eldorado-net/][color=#002c99]Eldorado.NET[/color][/url][/li][li][url=www.borland.com/csharpbuilder/architect/eco/tutorial/][color=#002c99]Enterprise Core Objects (ECO?)[/color][/url][/li][li][url=www.thona-consulting.com/content/products/entitybroker.aspx][color=#002c99]Entity Broker[/color][/url][/li][li][url=www.devexpress.com/products/net/xpo/index.asp][color=#002c99]eXpress Persistent Objects for .NET[/color][/url][/li][li][url=community.fastobjects.com/community_fastobjects_net.htm][color=#002c99]FastObjects.NET[/color][/url][/li][li][url=sourceforge.net/projects/jcframework/][color=#002c99]JC Persistent Framework[/color][/url][/li][li][url=www.llblgen.com/][color=#002c99]LLBLGen Pro[/color][/url][/li][li][url=www.gotdotnet.com/Community/Workspaces/Workspace.aspx?id=f26c3ea6-facb-4ded-9a0b-07ed4e039b79==][color=#002c99]ModelWorks[/color][/url][/li][li][url=sourceforge.net/projects/nhibernate/][color=#002c99]Nhibernate[/color][/url][/li][li][url=www.nolics.net/][color=#002c99]Nolics.NET[/color][/url][/li][li][url=www.gotdotnet.com/Community/Workspaces/Workspace.aspx?id=6bf91dea-dea3-4949-9602-ea1ea32a22b4==][color=#002c99]Norm[/color][/url][/li][li][url=www.norpheme.com/][color=#002c99]Norpheme[/color][/url][/li][li][url=sourceforge.net/projects/objectbroker/][color=#002c99]ObjectBroker[/color][/url][/li][li][url=groups.msn.com/objectspaces][color=#002c99]ObjectSpaces[/color][/url][/li][li][url=www.firestarsoftware.com/products/objectspark.shtml][color=#002c99]ObjectSpark[/color][/url][/li][li][url=www.mongoosesolutions.com/mg/default.aspx][color=#002c99]Objectz.NET[/color][/url][/li][li][url=ojb-net.sourceforge.net/][color=#002c99]OJB.NET[/color][/url][/li][li][url=sourceforge.net/projects/opfnet/][color=#002c99]OPF.Net (Object Persistent Framework)[/color][/url][/li][li][url=www.olero.com/][color=#002c99]ORM.NET[/color][/url][/li][li][url=www.pragmatier.com/][color=#002c99]Pragmatier Data Tier Builder[/color][/url][/li][li][url=www.2lkit.com/Default.aspx?path=products==][color=#002c99]RapTier[/color][/url][/li][li][url=sourceforge.net/projects/sisyphuspf/][color=#002c99]Sisyphus Persistence Framework[/color][/url][/li][li][url=www.alachisoft.com/][color=#002c99]TierDeveloper[/color][/url][/li][li][url=groups.msn.com/objectspaces/general.msnw?action=get_message&mview=0&ID_Message=165&LastModified=4675436390785936871==][color=#002c99]Bob.NET[/color][/url][/li][li][url=www.dotnetpark.com/software.html][color=#002c99]ObjectPersistor.NET[/color][/url][/li][li][url=www.genom-e.com/][color=#002c99]Genome[/color][/url][/li][/list]


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待