• 2、学习Codesmith 之 petshop 实体层


     个人觉得学习 codesmith 需要一点基础:

         需要懂一点ASP.Net 会写三层架构 对程序员枯燥的生活有一定认识

         而PetShop随着版本的不断更新,至现在基于.Net 2.0的PetShop4.0为止,整个设计逐渐变得成熟而优雅,有很多可以借鉴之处。为了简化文章 我们只会 Model ,  IDAL , SQLServerDAL , DALFactory , Bll ,Web 进行生成

         研究petshop有一段时间啦 网上它关于的文章也不记其数

    我们先了解一下petshop4.0:

    下载地址: http://download.microsoft.com/download/8/0/1/801ff297-aea6-46b9-8e11-810df5df1032/Microsoft%20.NET%20Pet%20Shop%204.0.msi

    petshop系统架构设计:http://www.cnblogs.com/wayfarer/archive/2007/03/23/375382.html 

         数据实体对应数据库中相应的数据表。它们没有行为,仅用于表现对象的数据。这些实体类都被放到Model程序集中,例如数据表Products对应的实体类ProductInfo,这些对象并不具有持久化的功能,简单地说,它们是作为数据的载体,便于业务逻辑针对相应数据表进行读/写操作。虽然这些类的属性分别映射了数据表的列,而每一个对象实例也恰恰对应于数据表的每一行,但这些实体类却并不具备对应的数据库访问能力。

    让我们共同学习petshop  实体层 的生成

    我们需要得到的是什么? 需要定义一个什么样的模板

    首先例出你所想的目标程序(以ProductInfo为例) 找出目标程序的可变量

    PetShop.Model

    可以看出在不同项目中的不同 Model 会有不同命名空间,不同的类名,不同的字段 属性 方法

    命名空间需要定义一个属性 而类 字段 属性 方法 需要从数据库中获得 需要定义一个数据库访问属性

    这回,我们开始探讨CodeSmith与数据库的联系,在CodeSmith中自带一个程序集SchemaExplorer.dll,这个程序集中的类主要用于获取数据库中各种对象的结构。

     因为是针对表去生成属性,则首先要定义一些变量,然后指明这些变量类型为数据库中的表,这样我们可以通过这个数据表类型的变量得到相应的表的信息。
    <%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context"  Description="Table that the stored procedures should be based on." %>

         如果想访问视图的话,则将变量类型Type中的SchemaExplorer.TableSchema修改为SchemaExplorer.ViewSchema即可。

     

    详细请见: CodesmithAPI help 中的 SchemaExplorer

     

    模板代码: 写一个模板不是为了生成一个类(ProductInfo) 而是多个相似的类 我们可以通 Properties 设置对应的值 设置类对应的不同的数据库对象

    Code

    哎。。。   奇怪 怎么引入了 MAP

    因为我们需要把系统类型转为C#类型 我在模板中使用了<%= CSharpAlias[column.SystemType.FullName] %>

    把鼠标指针移到 CSharpAlias 就可以看到它的上级 通过API去了解它的详细介绍和它上级的详细介绍

                                                                          Author:Nadim

                                                                         2008-8-23 13:37:28

  • 相关阅读:
    C#操作Word打印
    判断文件名是否有效
    Windows系统下的程序开机自启
    Winform应用程序使用自定义的鼠标图片
    C# 操作网络适配器
    Runtime Error! R6025-pure virtual function call
    Winform中跨线程访问UI元素的方法
    C#自定义属性转换类---类型转换器
    获取计算机硬件信息
    获取程序集信息
  • 原文地址:https://www.cnblogs.com/Nadim/p/1274616.html
Copyright © 2020-2023  润新知