NewLife.XCode 上手指南(二) 反向工程使用举例

在上一节中我们在建立数据库的时候提到过,XCode强大的反向工程能力,这里在本机举个例子,实体还是用上次的实体,代码还是上一节的代码,只是修改Web.Config就可以有神奇的功效,以及提供一个仅依靠Web.Config的连接字段,脱离实体的数据库复制代码和方法.

 

如果是第一次阅读本文,没有XCode的DLL的请阅读上一篇日志获取DLL

NewLife.XCode 上手指南

http://www.cnblogs.com/JangoJing/archive/2012/07/26/2610034.html

 

 

一、反向工程SQL2005到MySQL

上一节中,我的数据库是建立在SQL2005里的,这里我们要演示如何通过只修改Web.Config就在MySQL里生成一个数据库.

首先要介绍的是XCode的配置,XCode的所有配置,在XCode.DLL里,通过反编译就可以看到
image

这里我们要介绍的是几个常用的配置

    <!--是否启用反向工程,默认不启用。反向工程可以实现通过实体类反向更新数据库结构-->
    <add key="XCode.Negative.Enable" value="true"/>

这个配置默认是不打开的,只有手动打开配置,XCode在初始化的时候,会自动检查连接字段,如果不存在数据库,就建立数据库,XCode是如何工作的,具体的深入分析见小董的博客

关于Xcode数据库反向工程的理解


http://www.cnblogs.com/asxinyu/archive/2012/04/23/2467055.html

这里我们不深入探讨,只要我们打开了这个设置,那么XCode在程序启动的时候就会自动生成数据库,所以你开发好的程序,直接拿到你同事电脑上,一改连接字段,马上就可以运行.


在这里提示一点,请注意实体的属性声明,譬如Student.cs最顶端,默认有个属性是不存在的

[ModelCheckModeAttribute(ModelCheckModes.CheckTableWhenFirstUse)]

因为他有默认值,默认就是第一次运行的时候检查所有表,当然他还有另外一个值,就是用到的时候检查


我们可以这样配置,一般不用设置,采用默认设置即可
image


因为即将用到MySQL,所以我们要复制mysql.data.dll到我们的工程项目中,这个文件在代码生成器文件夹里能找到
image


接下来,修改Web.Config

首先是打开反向工程的开关,和一些其他的设置

  <appSettings>
    <!--是否启用调试,默认不启用-->
    <add key="XCode.Debug" value="false"/>
    <!--是否输出SQL语句,默认为XCode调试开关XCode.Debug-->
    <add key="XCode.ShowSQL" value="false"/>
    <!--设置SQL输的单独目录,默认为空,SQL输出到当前日志中生产环境建议出到站点外单独的SqlLog目录-->
    <add key="XCode.SQLPath" value=""/>
    <!--是否启用反向工程 默认不启用。反向工程可以实现通过实体类反向更新数据库结构-->
    <add key="XCode.Negative.Enable" value="true"/>
  </appSettings>


image

接下来改连接字段

  <connectionStrings>
    <!--<add name="XCodeTest" connectionString="Server=(local);User id=sa;Pwd=sa;Database=XCodeTest" providerName="System.Data.SqlClient"/>-->
    <add name="XCodeTest" connectionString="Server=.;Database=XCodeTest;Uid=root;Pwd=root;" providerName="MySql.Data.MySqlClient"/>
  </connectionStrings>

image


先看一下MySql
image


万事具备,只欠F5,程序运行起来后,看不出任何效果,但我们到MySQL里看看呢.
image

表结构都过来了,但是其实表里面是没有值的.
image

 

由于我们在Web.Config中打开了日志功能,所以在项目根目录下有个LOG文件夹.里面有我们所有SQL语句,这里没有做其他操作,所以只有这些内容

image

 

 

 

二、脱离实体,仅用20几行代码搞定整库迁移

 

详情请看小董博客

利用Xcode 20行代码搞定任何数据库的迁移


http://www.cnblogs.com/asxinyu/archive/2012/04/26/2470838.html

 

 

本节Demo(本节Demo仅供本节测试,后续小节不基于本节Demo)

http://dl.dbank.com/c0m1dmf1zw 

 

 

XCode上手指南系列:

NewLife.XCode 上手指南

 

 

NewLife论坛地址:

http://www.newlifex.com/

 

大石头博客:

http://www.cnblogs.com/nnhy/

NewLife.XCode开发资源目录

http://www.cnblogs.com/asxinyu/archive/2012/06/02/2532210.html

posted @ 2012-07-26 17:02 JangoJing 阅读(...) 评论(...) 编辑 收藏