第一节:

大家好:
我们今天讲的还是代码生成,我们知道的有codedom是微软生成自己框架代码的一个类,可以说是自己生成
自己了.不过我说的生成是根据一定的规则来生成一定的代码.
  我们的DotNetAuto已经是升到了b/s框架了,可是还是不完善的,现在最主要的问题是:可空,model层定义
,dal的定义,表现层的代码实现.我们今天晚上来探讨一下.
   可空,在数据库中,因为有一些值不是所必须要的,按照这一定的原则,给定了一些空值,但是这些空值在
我们程序员的开发过程中,出现了许多不必要的麻烦,首先,在从数据库传值给model的时候,
当值类型为string的时候:  DBNULL可以用null表示, 但是在.net 2.0以前int ,datetime的表示就是比较
的麻烦了. 我估计,以前人们为了表示这些空值,是这样做的-1表示int的空值,1900-1-1表示datetime的空
值, 当然这在一定的条件下是可以的,但是总体来说却是不怎么明朗的.在.net2.0后 system.nullable<>
泛型得到了较好的使用 System.Nullable<int> 中是可以用null表示数据库可中的DBNULL的
,system.nullable<datetime>也是一样的...可以用null表示空值,
  从model到数据库的过程中,null也是不能直接用为dbnull的,所以我们采用的方法 是先判断是否空再传
值,
system.nullable<int> icardid;
if(icard.id.hasvalue)
{
 command.paramater["@cardid"].value=icard.value;
}
else
{
 command.paramater["@cardid"].value=DBNULL.VALUE
}
____________________________________________________
int icard;
command.paramater[i].value=icard
_____________________________________________________
反过来,就是要判断所读的字段来构造 这个system.nullable<int>的
测试:
 datareader getint32(i)可不可以读空值呀 如果可以直接生成null的值
    不可以的,不过可以先用isdbnull(i)来检测一下:

int? i=dr.isdbnull(i)?dr.getint32(i):null;

让我们用datatable datarow则为
dr[0] != DBNULL?convert.toint32(dr[i]): null;
_____________________________________________________

icard = sdr.getint32(i);
icard = convert.toint32(dr[i]);

_____________________________________________________
这就是model-数据库 技术的全部

第二节 界面的深入:
   第二部分是model与前台界面的关联:
    model->前台: 
      当string != null \  int? .hasvalue \ datetime? .hasvalue 
            textbox.text = string; textbox.text int.tostring(); |datetime.toshorttime();
先判断model不为空 再进行绑定  
dropdownlist -
先判断model不为空 (判断其中的值不为空-即为有可选项)   再进行绑定

******************************************************************************************* 
 
 password,password text,textarea, select-dropdownlisp,listbox, input-
buton,hidden,checkbox (2, 3, 4)radiobutton
=========================================================================================
前台-->model
textbox -- password --  strName = txtName.Text ; intCard = int.parse(txtCard.text);
dropdownlist   strName = dropdownlist.selectvalue ;intCard = int.parse
(dropdownlist.selectvalue);
这样的意思是可空的string -varchar会被赋与 空字符值 int 保留空值dbnull
radiobutton checkbox 是这样的了 呵呵

这一节就到这里吧 ,大家自己回去好好想一想.

=========================================================================================
  
大家好 这一节分析 , ①界面的生成-②验证控件- *javascript *绑定数据库的默认值

我们最常用的有
 
 
  <asp:textbox{text种类} id="txtname"{名称} runat="server" MaxLenth="20"{长度} readonly=true{主键} Width=45{}
  value="" textMode="textbox"{类型}></asp:textbox>
 
   <lxf:inputdate id="txtbegin" runat="server" width=34></lxf:inputdate>

<asp:dropdownlist id="ddlcatage" runat="server" >
 <listitme select=true> assd</listitme>

</asp:dropdownlist>

<asp:label id="label1" runat="server"></asp;label>
   <asp:button id="button1" />

我也没有想法了.....

第三节: 混合类 model+idal的优化+存储过程

在我们看到的这些类中,有一些是已经用过的BASE类 , 另外一些是用的自定义的连接数据库的,连接方法, 这些虽然已经用类实现 ,但是缺乏优化,

字段 的前缀: 怎么说呢 , 在匈牙利命名法中 前缀是很重要的..但在.net的时代里,前缀i,n,str不是太重要的手段表示字段了,我想这个可以优化一下的.

清晰的简单的架构是比较易实现的, 所以这一版本中 可以实现 ,伪存储过程的字符串, (petshop4)中的表达方式.
paramater可以存放:ipara... upara .. 用sqldatareader返回insert的插入后的值,update 错误值

模块化的设计

insert - update -deletebypk - deletebyids- selectbypk-selectall-selectbycatagory-selectallbywhere-selectbypage(X,Y)-
getcount();
**************************
getcount_bywhere(string);
selectbywhere(string,X,Y)

***************************

administrator

public bool IsExist();
public bool ChangePwd(old,new);
public bool Login(name,password);
public

user
***************************
假删 -bDelete  &&&&&&&&&&&&&&&&&&&&&   ISDELETED = 0

NEWS
增加 public int addcount();     &&&&&&&&&&&&&&&&&&&&&   Count = Count+1
得到外键: public 从外键中到得集合 &&&&&&&&&&&&&&&&&&&&& ID &&&&&&&&&&&&&&&&&&&&& Name
[一对多]

model 从有外键的列中得到类...

生成器中的model有存储过程对生成器的需求分析:
model要求全部的列作为生成的对象,并且包括含外键对应的表 (目前为必须设定)
存储过程对生成器的要求:除了执行model的u i d,外,另外的生成可以自行支配生成器的列选择器.

视图---- 外连接 --- 生成
这一部分的生成 , 有待与用用户控件的方式生成:
技术点:用户控件,事件,DOM
(今天是2006-11-20 23:20:43 手冷呀)
代码有向生成方面技术:
  虽然从直观上可以用最简单,最笨的方式生成所希望的代码,但这个过程绝对不是我们所期待的... 而且我们
会绝不会在只生成这方面停滞, 必然会向重构\代码分析\这一系列的方向展开....

模型:
petshop三层建模, 从发展的角度去看,单说建模的技术就是一种技术性很强的东东.

代码:
  统一命名规则..  就是我们自己所采用的风格..

从模型    -  >     代码
  dom 可以实现 建模技术:  ---writer类--工厂模式
  另类的生成 xml+xslt  总体来说是一种基于高层上的建模技术,效率不可知,但对于底层的掌握不好

通过简单命令行实现    解释器模式---- 设计模式

从代码  -   >    模型   ->代码  这也可以看成是一种重构的过程
  可以用编译器实现 -- 编译原理  --技术正则表达式

**前天分析的编程高手, 一方面是自己独到的见解,别人可能要花上很长的一短时间才能看的明白
 第二方面,是能力的一个方面,就是粒度比较的大,这里并不是说他的整体上是杂乱无章的,而是说
他的结构是相当的有效,另一方面是指他的代码段从量上说是大的,从含盖的内容上可以是一个不是
太明晰的结构性的东西,但是却十分有效.(先不知道自己的想法是不是正确 , 我感觉是未来人类的
一种思维方式,7->14之类的东东.. 单位的复杂粒度变大,细节上的东东,用成型算法)

在一定程度上的定型: 世界处于一种深度的递归状态,自己的思想也是这样的,递归的过程,是量变
引起质变的过程, 所以说要把握一个度,一个从量变到质变的度,不可以太快的进行下一个的递归,
就像是人们必须生产高级汽车后才生产离心飞行器的初版, 我是一个递归很快的人...所以说就忘
记了细化一些东东,对原有东西的充分吸收.  放慢递归速度,加快积累速度.

2006-11-21 22:38:10
定死里面的东东 里面的const变量
rdr : sqldatareader
command.paramter["@XX"]里面的东东,都是column的原形
param
params
//感觉在程序里改一个方法名 getIpara_order 很是容易,, 但现生成是有麻烦的,因为它需要一个
//规则支持,, 而现在没有的原因造成的..
GetIParameters()  : 获取参数
SQL_INSERT:插入的sql
SqlIParameter
//=>:          生成的模型
strSQL
sda:sqldataadpter
私有字段:db.column.tolower
属性:大写第一个db.column
页面定义的类: obj
类的命名:____________________
参数主键的定义______
TextBox前缀:txt
DropDownList:ddl

星期三 2006-11-22 23:51:55
今天生成了一部代码生成简版的(单表).
已经完成的功能有,类主体的生成,insert update delete select all,select by pk,
基本界面控件,界面与类的互交等三大功能

... 功能还有待完善 需要大量的测试,
就是要做大量的网页后才可以进一步升级, 除了目前测试是最主要的矛盾外,
系统还有不少的缺陷: 控件类:日期,多选,单选的功能   在测试中完善.............
系统方法实现太少,  在测试中完善.............
系统不支持多表,视图,存储过程,   在下一版本中完善.............

星期五 2006-11-24 23:28:07
今天测试:
buglist :
Datatime ->DataTime   马虎 -------库的原因
MaxLength 记忆不准确MaxLength
没有control 脑力不足
m_content    .     ; ----- 不细心  --欠考虑
obj.M_datetime.Value.ToShortDateString ..欠考虑
this.m_id = rdr.GetInt32(0);  重复  没考虑..
 'AND' 附近有语法错误。  程序有问题 bug --考虑-关联 - , 的长度是,但是 and 是5

命名空间 考虑
通用类

命名空间 :可有 可无  可以通过配置参数确定 ------有待实现 >>>>>> 类名
命名法则:从页面取值,, 不自动生成...
通用方法 - 私有字段,共有属性, 通用类生成表genTable 提议静态

约定  命名空间==string.Empty 就不生成.....

下一阶段的目标是:
1.改造select all的属性, 绑定到泛型上  ,列分析清楚
2. 尝试构造多表model ---
3. 进行数据库的已有存储过程的掉用 实现方法可配制化,同时可以动态增加方法.先不要
考虑:反序列等保持状态的问题.

* 自定义控件的数据库操作 .. 难点.(后期扩展)2006-11-25 2:49:47
over

2006-11-25 22:41:32
发现:用datareader 的时候 return 值 与 output值不能同时返回回来......

2006-11-26 11:26:33
睡的真舒服..
要考虑的东西,
① petshop的order是如何插入item的
② 生成的数据集是怎么处理 方法类型的 select insert delete等.
一句话 ,第一步总是用能行的办法实现....
其实在第几步之前 我想应该是前多实现几种死的常用方法,实现可配置....再进行第二步的实现

看了一会petshop说实话.和他其实是有一定的差别 从建模方式上差距就很大.

2006-11-28 22:17:47
过了两天 ... 开始测试了 ..
...少 public ....
测了不少的BUG呀.. ... 呜呜
想着快却总是出问题喽.
..从整体的角度讲, 自动机有必要生成一些框架结构性的东西,比如App_Code文件夹等等,这就要求有项
目的考虑方式了.
现在有两个问题需要考虑 ①就是要建立整体性的方案,如何组织文件管理,是否已经有必要开始建立一个
新的项目开进行代码的生成.如果是那样的话 ,又应该如何去管理这些文件?
②就一些细节而言,如adminM.aspx是否有必要进行模式化的生成,生成的话 需要考虑模型的生成原子粒度
与采用何用方式生成,就目前而言,小粒度,复杂的模块,采用逐语句生成,但是对于网页页面却不一定的
试用.采用粒度较大一点的替换,将会提升一定的效率,.....呵呵....有点道理吧......粒度更大的时候
就采用块块集成的东东(我都不知道是什么了).

这样的话,就涉及到组织程序框架的问题了,,我打算采用以前的那种方式,总体来说是十分有效的:建立
模块库,是不能随便改动的..里面有我自己定义的框架模型,程序是基于框架模型再跑动的.....我想就是一个不错的主意,,  有点Xslt的味道了,当然可以用他的框架生成,只是自己的东西随意性比较的大,最好是先按自己的思想一步步发展到和xslt同等程度的思考...
  这时的我回想起了我的codeback程序2005年的时候吧 , 就是采用的这种思想去做的,当时做的还可以,只是到后来考虑到了各种数据的表达形式的时候,就有点不想弄了感觉了..(2006-11-29 1:9:55)
呵呵,真是有所期待呀, 我想着过不了多久,我的自动机将再进一个新的版本,这个版本就叫V1.1吧,听起来有点熟悉的感觉的,今天就到这里吧。
任务:
①完善生成的后台页面代码
②开始进行构建模板库
③开始进行项目组织管理(这个到后期的时候 整个系统将改用,Add-in技术实现以技术更多的功能)
2006-11-29 1:16:07
[放慢递归速度,加快积累速度]

转载于:https://www.cnblogs.com/lxf120/archive/2006/11/29/576298.html

中国@代码生成技术@国产相关推荐

  1. 北斗导航 | 完全自主研发国产高端三维激光雷达助力中国测绘技术发展

    ================================================ 博主github:https://github.com/MichaelBeechan 博主CSDN:h ...

  2. DTCC 2020 PDF(共77个)丨2020中国数据库技术大会文档分享

    墨墨导读:2020中国数据库大会以"架构革新 高效可控"为主题,设置2大主会场,20+技术专场,邀请了超百位行业专家,重点围绕数据架构.AI与大数据.传统企业数据库实践和国产开源数 ...

  3. 国产化服务器兼容系统,必须兼容中国芯,国产操作系统再迎来发展机遇?

    原标题:必须兼容中国芯,国产操作系统再迎来发展机遇? 1月14日,中央国家机关2020-2021年Linux操作系统协议供货采购项目成交公告发布.该项目分为桌面操作系统(应用于台式机笔记本)和服务器操 ...

  4. 2015中国数据库技术大会十大看点抢先看

    未来世界什么最重要?有人说是数据,你赞同吗?大数据到底是一种新趋势还是老调重弹呢?有人总结了一句"扔掉数据的代价大于所需机器的代价时,大数据才有了存在的价 值."换而言之,当数据本 ...

  5. 中国首款国产通用型云操作系统,究竟是如何诞生的

    提起操作系统(Operating System,简称OS),相信大家都耳熟能详.从PC时代的Windows和Linux,到移动互联时代的iOS和Android,许多人每天都要和操作系统打交道.可以说如 ...

  6. 从“奋力追赶”到“略有小成”,中国根技术要如何“破局”?

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 「根深才能叶茂,本固方得枝荣.」伴随着新一轮科技革命与产业变革的快速展开,越来越多人开始意识到,软件产业就像一棵参天大树:枝繁叶茂的上层 ...

  7. 中国HBase技术社区第一届Meetup资料大合集

    2018年6月6号,由中国HBase技术社区组织,阿里云主办的中国第一次HBase Meetup在北京望京阿里中心举行,来自阿里.小米.滴滴.360等公司的各位HBase的PMC.committer共 ...

  8. 2020 AI产业图谱启动,勾勒中国AI技术与行业生态

    <2020年国务院政府工作报告>提出,重点支持「两新一重」建设.其中「两新一重」中的第一个「新」,就是新基建,而人工智能是新基建的重要组成部分. 新基建首次被纳入政府工作报告后,各大科技厂 ...

  9. 阿里云智能 AIoT 首席科学家丁险峰:阿里全面进军IoT这一年 | 问底中国IT技术演进...

    作者 | 屠敏 受访者 | 丁险峰 来源 | CSDN(ID:CSDNnews) 「忽如一夜春风来,千树万树梨花开.」 从概念的流行.至科技巨头的相继入局.再到诸多应用的落地,IoT 的发展终于在万事 ...

最新文章

  1. MVC项目开发中那些用到的知识点(Asp.Net Mvc3.0 Areas)
  2. 爬虫实战:链接爬虫实战
  3. tensorflow系列之1:加载数据
  4. python找房源_Python租房信息分析!找到最适合自己的房源信息!
  5. React开发(170):ant design datapicker限制选择时间
  6. java路径怎么找_Java路径怎么找
  7. linux能记录日志的终端,Linux上的日志系统
  8. python常用模块-time和datatime
  9. Jquery操作对控件的取值、赋值
  10. 使用iframe的一些经验
  11. CMOS和TTL电路区别
  12. java 字符串特殊符号_Java去除字符串中的特殊符号或指定的字符
  13. 多糖类水凝胶构建制备介绍(瑞禧多糖水凝胶简述)
  14. C# 同间字查询 (汉字转拼音 拼音转汉字 简体繁体互转 )
  15. 强大免费的在线格式转换工具,三步轻松完成。
  16. 北京大学计算机考博英语,2019年北京大学博士英语考题回忆
  17. 2021Java面试心得:java性能优化实践pdf
  18. 如何用html布天猫页面,天猫前端系列教材 (四十七)- 其他页面 - 登录页面
  19. 论文笔记:Federated Graph Neural Networks: Overview, Techniques and Challenges
  20. week3-day7 某人想将手中的一张面值100元的人民币换成10元、5元、2元和1元面值的票子。要求换正好40张,且每种票子至少一张。问:有几种换法?

热门文章

  1. Localization
  2. CVE-2017-5521: Bypassing Authentication on NETGEAR Routers(Netgear认证绕过漏洞)
  3. HTML5文本框灰体字
  4. AJAX推送与拉取方式的比较
  5. 例题2-1 在屏幕上显示一个短句。
  6. 给ModalPopupExtender控件添加弹出关闭等事件
  7. 微服务部署HTTP反向代理、负载均衡工具Træfɪk
  8. Linux中sort,uniq,cut,wc命令详解
  9. 可以让你玩儿光剑的程序,vc实现方法和代码
  10. 【前端大概一分钟】css隐藏滚动条同时可以滚动