DataObject用于业务逻辑,通过EF可以自动帮助我们的程序自动生成相关数据库

  • 栏目:编程 时间:2020-05-02 15:12
<返回列表

此文演示了PHP三层开发的强大功能,PEAR::DB_DataObject用于业务逻辑,Smarty用于显示逻辑,这里假设你熟悉了HTML,Smarty,PEAR::DB_DataObject,Mysql和PHP5.如果你需要补充知识,下面的文章解释了一些原理:用PHP DataObject简化业务逻辑Smarty简介:一个PHP模板引擎PHP可伸缩性:Myth你应该已安装和配置好了Apache,MySQL,和PHP5(或者IIS,MySQL5和PHP)PEAR::DB_DataObjectPEAR::DB_DataObject 是一个用户数据库访问的抽象API.它是一个基于PEAR::DB的SQL构建器和数据建模层.它把数据库表映射到PHP类并且提供像SELECT,INSERT,UPDATE,和DELETE这样的公共SQL函数.这使即使不了解SQL的开发者也可以写出好的数据库访问代码,并且鼓励演示逻辑和业务逻辑有一个清晰的分离.(DB_OO已经移动到的PEAR,现在是DB_DataObject,如果你有老的代码要更新,查看关于从老的db_oo代码更新到DB_DataObjects的注释).相关阅读Upgrading to PHP 5By Adam TrachtenbergTable of ContentsIndexSample ChapterRead Online--Safari Search this book on Safari: Only This Book All of SafariCode Fragments only DataObject performs two tasks. First, it builds SQL statements based on the object''s variables and the buildermethods. Second, it acts as a datastore for a table row. There''s a core class, which you extend for each ofyour tables so that you put the data logic inside the data classes. There''s also an included Generator to makeyour configuration files and your base classes.DataObject 执行两个任务.第一,它构建基于对象变量的SQL语句和构建器方法.第二,它作为数据库表的数据存储.这里有个核心类,对于每个表继承它,以使你把数据逻辑放入数据类中.这里还包括一个生成器,DataObject 极大的简化了数据库访问代码,它使开发大型的,数据驱动的站点更加容易.At present, Alan Knowles, the lead developer of PEAR::DB_DataObject, is working on a new project called DBDO,a C implementation of the PEAR package DB_DataObjects, based on libgda. His goal is to create the nextgeneration of PEAR::DB_DataObjects.SMARTYSmarty是一个从web页演示中分离内容的PHP模板引擎.它使用GPL许可.Large projects commonly separate the role of the graphic designer from that of the programmer. However,programming in PHP has the tendency to combine those two roles in a person and inside the code. This can bringdifficulties when it comes time to change some part of the page''s design. If the page mixes content andpresentation, the developer has to crawl through the program to find the presentation. Smarty helps to solvethis problem.Combining the TwoThe first thing to do when starting this project is

EF产生的背景:

    编写ADO.NET访问数据的代码,是沉闷而枯燥的,所以微软提供了一个对象关系映射框架(我们称之为EF),通过EF可以自动帮助我们的程序自动生成相关数据库。

Writing and managing ADO.Net code for data access is a tedious and monotonous job. Microsoft has provided an O/RM framework called "Entity Framework" to automate database related activities for your application.

EF的定义:

EF是一个对象关系映射【ORM】的框架,它保证程序员把相关的数据作为特别的领域对象,减少了程序员编写大量的访问数据库的代码。开发人员,使用LINQ来查询,检索,操作数据为强类型对象来处理。EF框架提供了更改跟踪,身份识别,懒加载,和查询转换,所以开发人员可以专注于他们的程序中的逻辑代码,而不是数据访问基础。

The Microsoft ADO.NET Entity Framework is an Object/Relational Mapping (ORM) framework that enables developers to work with relational data as domain-specific objects, eliminating the need for most of the data access plumbing code that developers usually need to write. Using the Entity Framework, developers issue queries using LINQ, then retrieve and manipulate data as strongly typed objects. The Entity Framework's ORM implementation provides services like change tracking, identity resolution, lazy loading, and query translation so that developers can focus on their application-specific business logic rather than the data access fundamentals.

EF的三个应用场景:

Entity framework is an Object/Relational Mapping (O/RM) framework. It is an enhancement to ADO.NET that gives developers an automated mechanism for accessing & storing the data in the database.

Entity framework is useful in three scenarios. First, if you already have existing database or you want to design your database ahead of other parts of the application. Second, you want to focus on your domain classes and then create the database from your domain classes. Third, you want to design your database schema on the visual designer and then create the database and classes.

The following figure illustrates the above scenarios.

1.根据已经存在的数据库,生成相关类;

2.根据相关领域类,生成数据库;

3.在可视化的设计器中,来创建类和数据库;

 

 韦德体育 1

 

As per the above figure, EF creates data access classes for your existing database, so that you can use these classes to interact with the database instead of ADO.Net directly.

EF can also create the database from your domain classes, thus you can focus on your domain-driven design.

EF provides you a model designer where you can design your DB model and then EF creates database and classes based on your DB model.

 

什么是O/RM?

 

ORM is a tool for storing data from domain objects to relational database like MS SQL Server, in an automated way, without much programming. O/RM includes three main parts: Domain class objects, Relational database objects and Mapping information on how domain objects map to relational database objects (tables, views & storedprocedures). ORM allows us to keep our database design separate from our domain class design. This makes the application maintainable and extendable. It also automates standard CRUD operation (Create, Read, Update & Delete) so that the developer doesn't need to write it manually.

 

A typical ORM tool generates classes for the database interaction for your application as shown below.

 

 

ORM是一个工具,它可以自动的存储数据库(比如MS SQL Server)中领域对象中的数据,而不需要很多编程。

O/RM包含3个主要的部分:

           1.领域类对象

     2.关系数据库对象

           3.映射信息(领域对象,怎样映射到数据库对象【表,视图,存储过程】?)

     ORM允许我们把数据库设计和领域类设计分开来,这样保证了程序的可维护性和可扩展性,ORM同样自动帮助我们生成了增删查改(CURD)操作,所以我们不必手动去写了。

 

     韦德体育 2

Tips:要了解更多的ORM技术,可以访问 这个链接: Object-relational Mapping

Visit wikipedia for more information on Object-relational Mapping

There are many ORM frameworks for .net in the market such as DataObjects.Net, NHibernate, OpenAccess, SubSonic etc. Entity Framework is an open source ORM framework from Microsoft.

Please note that Entity Framework is an open source framework by Microsoft. You can contribute to the Entity Framework project oncodeplex.

ORM框架分类:

  1. 韦德体育 ,### DataObjects.Net

  2. ### NHibernate

  3. ### OpenAccess

  4. ### SubSonic 

  5. ### 请注意:EF是微软的开源ORM框架,所谓开源就是你可以参与开发,有兴趣的可以去这个网站看看:codeplex.

好了,EF的介绍到此结束了。后面继续更新,觉得不错的,园友可以点赞,你的支持是我前进的动力!

上一篇:php 截取中文 下一篇:没有了

更多阅读

DataObject用于业务逻辑,通过EF可以自动帮

编程 2020-05-02
此文演示了PHP三层开发的强大功能,PEAR::DB_DataObject用于业务逻辑,Smarty用于显示逻辑,这里假设你...
查看全文

用面向过程的风格来书写代码很可能是你

编程 2020-05-02
PHP语言从诞生起,就具有了很好的面向过程编程的特性。只是在其进化过程中才逐渐加强了面...
查看全文

php 截取中文

编程 2020-05-02
?php ?php//截取中文字符串function mysubstr($str, $start, $len) { $tmpstr= ; $strlen = $start + $len; for($i = 0; $...
查看全文

友情链接: 网站地图

Copyright © 2015-2019 http://www.koi-bumi.com. 韦德体育有限公司 版权所有