a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 193|回复: 1

[考试辅导] Oracle技术:怎么用T4模板生成数据实体

[复制链接]
发表于 2012-8-4 14:06:19 | 显示全部楼层 |阅读模式
我们现有的项目没有采用任何ORM,所有的数据读取与操作都是基于存储过程的,在代码端使用 Enterprise Library 5 。 在 EntLib 和数据库之间,是基于我原来写的一个 T4 实体生成的模板,之前也没有详细的去整,反正能运行出结果就行了,总之,代码很乱。
4 ^+ ^* O9 h! I+ _8 {! @6 H    最近一期项目告一段落,后续项目还没有上马,一手把这个部门建立起来的总监(经理)又离开了这个团队,我们几个老一批的员工也在思索着是否换换。趁着这个便当,我把这个东西在整出来,算是给我增加一个砝码吧。
) C# e. C* u6 N5 w. Z1 q    什么是 T4 模板,自己去搜吧,怎么用也请自己搜吧。懂就懂,不懂我也懒得解释。  z7 x$ `# |0 S. T9 {; \
    我将要贴出的T4模板是将 SQLServer 2008 的 Table, View , TableType, Procedure 解析为 C# 里的对应实体,形如下:
8 d: G( j( T( d. ?+ N    Table/View/TableType- f9 x* D0 c0 L8 g2 |) f% h
    using System;
6 h" f3 a' `) {" E" J    using System.Collections.Generic;
0 T! ]/ C9 q* P    using System.Linq;
' w" }9 H% I+ a9 N' A    using System.Text;. T; X) U: ]* t0 f
    using System.Data;
# U  K. C/ O) \/ E$ S    using System.Collections;
# |! J% V! y5 g7 w' i" X/ h2 N    using System.ComponentModel;
7 }+ k9 L; c( }, H    using System.Runtime.Serialization;' q  ~# V9 {$ L  W& \2 ?/ a
    namespace AsNum.MySecret.Entity.Database {" K* x7 i/ n$ q6 v% r! X  O" X, r# A
    ///
, J) w0 ]2 m0 o, i/ |+ q2 B) B9 m5 C    /// Table : dbo.LoginPolicy
4 h" r8 T& w+ p/ }. X    /// 登陆策略
7 p9 u" Z2 p' N8 r% X% _7 @, Q    /// 数据实体$ U. L6 Q4 C0 i( i: @
    ///
$ N/ d- ]' ?; p% _) r+ ^2 f; R9 e    [Serializable]
9 M$ N- Q8 Y5 n. p) P    [DataContract]5 H6 b6 _" C* a6 e& |; v! \
    public class LoginPolicyEntity {
+ A+ h0 L: i; ~% Q* p    /// 0 f  O# m$ x0 F2 R* U8 P$ y$ P) k
    /// 自动编号
* O& @4 p1 c/ K2 W4 X    /// dbo.LoginPolicy.PolicyID
3 M2 P0 R1 @# W" t% f    /// 默认值
7 ~. J) s7 x/ v4 C    ///
$ Y/ B+ T' U, G% O    public int PolicyID{
. n4 S; z" A" n/ P    get;set;
- J2 f4 W6 v! a4 L- d    }/ p7 n5 |  j6 s; o" o% O8 G
    private int _UnfreezeTime = 30;
' L/ U% }7 p; Y2 o) z2 y% D    ///
+ d% C+ g" S: y4 R    /// 解冻时间
- v: ^3 B$ r6 D. s    /// dbo.LoginPolicy.UnfreezeTime. d, Y# C2 I: `
    /// 默认值((30))
( V. Z: U3 Z* |9 s: n5 T0 {" L    ///
9 N/ x& [( m( f3 `. J    public int UnfreezeTime{
1 y. I  |3 q( W0 T4 {( C: U4 ]  m* R. p    get{
: M# L+ j  C$ v! ^8 [+ }    return _UnfreezeTime;
) O% \: Y5 l1 v* j, Z5 b    }
' B+ F! h, D5 w9 t3 D    set{. {5 J9 n; c3 Y3 E9 ^8 }
    _UnfreezeTime = value;
6 H* P& _7 O3 T3 Z    }
6 L' C% \5 R: i2 }, V+ c7 @2 E    }) Q6 v% y% K9 ]2 ?2 Z
    private int _MaxFailedCount = 5;- Z) a: s% h1 g# n0 ?" r9 w  M. s
    /// % H( K' Y+ [3 O1 l- \0 ]
    /// 最大失败次数
' [3 d" v) e) d4 d3 f% p: s) t- j    /// dbo.LoginPolicy.MaxFailedCount# B4 a% p+ {6 ~9 t. ?0 N
    /// 默认值((5))" I+ J0 b  a2 R# O5 j% W: B
    ///
5 a5 @- _) A% e" y( f    public int MaxFailedCount{4 n- t! t  r0 e4 `5 f
    get{& F0 f# W0 f0 _; h0 z$ i* E
    return _MaxFailedCount;' M  Y! b) p; @# ]/ g  m8 n
    }
. \; e4 G% ^5 V8 F3 m  r: Z' ~) \    set{  F" `" y0 k7 F; _
    _MaxFailedCount = value;( ~- @6 }" B' Q6 `7 u0 V2 U
    }' `- Z; c' |# V- r
    }
回复

使用道具 举报

 楼主| 发表于 2012-8-4 14:06:20 | 显示全部楼层

Oracle技术:怎么用T4模板生成数据实体

private bool? _EnableLoginPolicy = true;- r2 P9 Q) v' ?  U
    /// 1 b5 ]( w: k8 m! x4 d. t
    /// 是否启用登陆策略
+ A$ J: t3 C7 T/ _2 a7 h- r" F1 H    /// dbo.LoginPolicy.EnableLoginPolicy
9 h2 Q9 I3 t( f( h1 |    /// 默认值((1))2 I* F( E% X/ m3 e1 g
    /// 5 {( x: g/ p9 K' Q6 l
    public bool? EnableLoginPolicy{
! j# V7 L; U  q; f6 _    get{
  v% n( `) s3 G$ T; e  s    return _EnableLoginPolicy;
5 ]) o/ l  s# `' k* S    }2 C$ ?2 f* u4 C4 K4 K1 W
    set{
0 m% V5 u, ~% s0 s6 x4 X' w+ Q    _EnableLoginPolicy = value;6 q  V$ u4 a' h% C2 p
    }
6 [2 N( d0 `/ h- U    }
/ J3 Y0 f2 c: ]    private DateTime _CreateTime = new DateTime();9 X0 f( \$ z  p, Q) A  X
    /// 4 ~3 l& g) R4 L3 s0 b! \
    ///
& a3 J) `! g* D& C6 p& S    /// dbo.LoginPolicy.CreateTime; `& `' O. }: Y  w% Y3 ?+ S
    /// 默认值(getdate())
( u% x% a6 H0 l) H& e. ?" a' y# S2 Q    ///
/ I$ s  [" R! u3 |! b# a    public DateTime CreateTime{
# y4 t$ J" \; r+ N1 H0 V    get{
, _$ N* D8 f" l/ ~" S. q" G    return _CreateTime;
/ H* T8 W3 E- Y" ?2 a0 P7 L    }
# W: {* e9 y. i) ^; I# H3 i. }4 Y2 k    set{
- A" e* ]& u& B. a    _CreateTime = value;
: U1 I. e/ V1 n7 R4 o& O+ x    }1 P+ o+ B# u- y! r. J
    }
9 B. }& y* ^5 C) q8 ]    ///
$ [6 x# b. }$ f% u    ///. D* X3 j7 k  u- C: s6 D
    /// dbo.LoginPolicy.Creator
$ F3 O0 ~' X0 W1 D( Y0 r* r    /// 默认值
0 a9 ~9 K: x# Y. M2 @7 p. I    /// # Z3 m0 p( I2 q. H+ e$ k
    public string Creator{% l4 e4 W! t& f- `: E8 o# N9 [
    get;set;5 n' ^3 V- c' Q% f
    }
& s  i! b4 x4 c2 z. }. n7 u: E    }  } Procedure
  u9 m: B; L& h) F9 Q7 S+ H    using System;
2 u* _2 U1 R. p$ s    using System.Collections.Generic;; ^; P4 y: I6 b
    using System.Linq;" L9 G- G& {3 e! ^% [; J5 C
    using System.Text;
2 p" y) ]9 h" ^( Y( `    using System.Data;
. m  R+ C! p0 d; N    using System.Collections;/ O9 _* Y$ Q% b2 U/ f. A
    using System.ComponentModel;
- R* T9 n' ?( v$ A3 ?1 p# [, n3 g    using System.Data.SqlClient;5 p' l% w. d3 P) E- s# B
    using Microsoft.Practices.EnterpriseLibrary.Data;
4 S* C6 Z1 Q+ T! Q2 X! }  D* p    using AsNum.MySecret.Entity.Database;
8 P* T8 t% t( d" p- r    using AsNum.Common.Extend;: @& e8 Q8 G! h" m3 g
    namespace AsNum.MySecret.DB! {! n2 i8 T8 `0 |5 W
    {
* r! s( F9 Q0 \. w8 V5 a5 f    ///
) ?0 i! q4 u3 n2 H/ z) d6 g( v    ///3 G2 E. ^( R7 c8 [: a+ I; C5 m4 F
    ///
9 y/ J$ R; ?0 U4 T  Q+ A" }    public partial class SPs {
# v' A( g' S/ ^0 e- U    ///2 b7 L$ L, @( I% l3 j
    /// 发送消息1 d4 z3 d1 T# R5 ?6 y) L
    ///8 k  C" l( f  k  d  U- u
    ///
' L& }- @/ D  R    /// @Title 消息标题8 @8 J! o6 f6 |
    /// @Ctx 消息内容
1 i* j. k4 }! d6 x' z    /// @UserID 用户ID
0 K. _* H8 ?5 `7 S4 P; g& u; s) A, f0 @    /// @FromIP 发消息的IP2 U2 j* C% A2 k* f4 Y% ~5 ^
    /// @IntranetIP 发消息的内网IP,用于扩展6 t$ F$ ~9 [2 r1 ~) F" b$ L7 v
    /// @IsPublic 是否公开
7 d5 c3 x2 l8 n! M; i    /// @Receiver 消息接收者,表变量
' g' q( A/ J9 Q4 \    ///
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-5 22:24 , Processed in 0.233426 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表