新工作 Day19 周一

1、今天写linq查询,表关联为什么还有顺序。。。前面出现的表要放在前面,不然会认不到。。。等于号也不能用,只能用equals ,以后可以改进下语法吧,还是放宽些好,技术上不难实现的。

from a in b

join c in d on a.xx equals c.xxx

2、IE下表格宽度不指定的话,会缩的很小,要设个width:100%才行,而chrome则不用(不知是否特例,项目中是出现了这情况。用chrome调好了,换成IE就变了)

3、安排了重构一个公共项目,加上UI,弄个Demo,这个很好,可以借此再熟悉一下项目,相当于重做一个系统。

4、不引用那些js和css了,合并压缩引用一个就可以,网上找了个工具【JSCompress】,但不能把大文件夹下所有文件压缩进来,只能一个个文件夹去选。同事说MVC有压缩的功能,Bundle加行代码。没试过,就算可以,也还是要把源文件引进来,显得比较杂。

5、数据库有个存储过程,传入表名,可以生成实体类的文本,可以在项目中手动新建实体类,然后把代码复制进去。以前公司是用t4模板直接生成,现在用存储过程,也挺新鲜的。。。

就是按表的字段生成实体。现在都用T4模板或EF了,看了下也没什么特别的,这种古老技术应该不至于是公司什么机密吧。贴出来抛砖引玉,大家共同进步。

 

if exists (select * from sysobjects where id = object_id(N'[dbo].[XXX存储过程名字]') and OBJECTPROPERTY(id, N'isProcedure') = 1)
drop procedure [dbo].[XXX存储过程名字]
GO

CREATE PROCEDURE [dbo].[XXX存储过程名字]                        
    @TableName varchar(50),
    @NameSpace varchar(50)
AS
    declare
    @sFieldName varchar(50),
    @sIsPk varchar(1),    
    @sDataType varchar(50),
    @tdescription nvarchar(50),
    @sdescription nvarchar(50),
    @sResult varchar(max),
    @sFieldLength varchar(50),
    @prec varchar(50),
    @scale varchar(50),
    @insert1 varchar(max),
    @insert2 varchar(max),
    @update varchar(max),
    @key varchar(100),
    @isnullable varchar(10)
    
    if @NameSpace is null or @NameSpace = ''
    begin
        Select @NameSpace = Name From Master..SysDataBases Where DbId=(Select Dbid From Master..SysProcesses Where Spid = @@spid)     
    end    
    select @tdescription = cast(isnull(g.[value], c.name) as nvarchar(50))
    from sysobjects c
    left join sys.extended_properties g on 
    c.id=g.major_id and g.minor_id=0
    where c.Name = @TableName


    declare FieldName cursor for     
    SELECT c.name, t.name, c.length, c.prec, c.scale, c.isnullable, cast(isnull(g.[value], c.name) as nvarchar(50)) description, case when c.name = p.COLUMN_NAME then 1 else 0 end IsPk  
    from syscolumns C
    left join sysobjects O on  C.id=O.id
    left join systypes t on t.xtype = c.xtype
    left join INFORMATION_SCHEMA.KEY_COLUMN_USAGE p on p.TABLE_NAME = O.Name
    left join sys.extended_properties g on g.major_id = C.id and g.minor_id =  C.colid
    WHERE O.xType='U' and t.name <> 'sysname' and O.Name = @TableName
    order by colorder

    OPEN FieldName

    set @sResult = ''

    FETCH NEXT FROM FieldName
    INTO @sFieldName, @sDataType, @sFieldLength, @prec, @scale, @isnullable, @sdescription, @sIsPk

    While @@FETCH_STATUS = 0
    Begin
            set @sResult = @sResult + '        /// <summary>' + char(13)
            set @sResult = @sResult + '        /// ' + @sdescription + char(13)
            set @sResult = @sResult + '        /// </summary>' + char(13)
        if @sIsPk = '1'
        begin
            set @sResult = @sResult + '        [Key]' + char(13)
        end
        set @sResult = @sResult + '        [Description("'+ @sdescription +'")]' + char(13)
            
        if @sDataType = 'datetime' or @sDataType = 'smalldatetime'
        Begin
            
            set @sResult = @sResult + '        public Nullable<DateTime> ' + @sFieldName + ' { get; set; }' + char(13)+ char(13)
        End

        else if @sDataType = 'real'or @sDataType = 'float'
        Begin
            If @isnullable = 0
                set @sResult = @sResult + '        public double ' + @sFieldName + ' { get; set; }' + char(13)+ char(13)
            Else
                set @sResult = @sResult + '        public Nullable<double> ' + @sFieldName + ' { get; set; }' + char(13)+ char(13)
        End

        else if @sDataType = 'numeric'or @sDataType = 'decimal' or @sDataType = 'money' or @sDataType = 'smallMoney'
        Begin
            If @isnullable = 0
                set @sResult = @sResult + '        public decimal ' + @sFieldName + ' { get; set; }' + char(13)+ char(13)
            Else
                set @sResult = @sResult + '        public Nullable<decimal> ' + @sFieldName + ' { get; set; }' + char(13)+ char(13)
        End

        else if @sDataType = 'int' or @sDataType = 'smallint' or @sDataType = 'tinyint' or @sDataType = 'bigint'
        Begin
            If @isnullable = 0
                set @sResult = @sResult + '        public int ' + @sFieldName + ' { get; set; }' + char(13)+ char(13)
            Else
                set @sResult = @sResult + '        public Nullable<int> ' + @sFieldName + ' { get; set; }' + char(13)+ char(13)
        End

        else if @sDataType = 'varchar' or @sDataType = 'char' or @sDataType = 'nvarchar' or @sDataType = 'nchar'
        Begin
            
            set @sResult = @sResult + '        public string ' + @sFieldName + ' { get; set; }' + char(13)+ char(13)
        End

        else if @sDataType = 'bit'
        Begin            
            If @isnullable = 0
                set @sResult = @sResult + '        public bool ' + @sFieldName + ' { get; set; }' + char(13)+ char(13)
            Else
                set @sResult = @sResult + '        public Nullable<bool> ' + @sFieldName + ' { get; set; }' + char(13)+ char(13)
        End
        else
        Begin           
            set @sResult = @sResult + '        public string ' + @sFieldName + ' { get; set; }' + char(13)+ char(13)
        End

        FETCH NEXT FROM FieldName
        INTO @sFieldName, @sDataType, @sFieldLength, @prec, @scale, @isnullable, @sdescription,@sIsPk
    End

    Close FieldName
    DEALLOCATE FieldName

    set @sResult =  'using XXX项目中要引用的;'  + char(13)
                    +'using System;'   + char(13)
                    +'using System.Collections.Generic;'  + char(13)
                    +'using System.ComponentModel.DataAnnotations;'  + char(13)
                    +'using System.ComponentModel.DataAnnotations.Schema;'  + char(13)
                    +'using System.Linq;'  + char(13)
                    +'using System.Text;'  + char(13)
                    +'namespace 项目命名空间.'+ @NameSpace +''  + char(13)
                    +'{'  + char(13)
                   +'    /// <summary>' + char(13)
                   +'    /// ' + @tdescription + char(13)
                   +'    /// </summary>' + char(13)
                   +'    [Table("'+ @TableName +'")]' + char(13)    
                   +'    public class '+ @TableName +' '  + char(13)
                   +'    {'  + char(13)
                   + @sResult + char(13) + '    }' + char(13) + '}'
    print @sResult
GO

 

下班开了周例会,弄得比较迟。电脑看太多,眼睛痛,早点去床上听《三体》吧。。。

======================

用了下【JSCompress】,基本能满足目前的需求了,有些不够人性化的:

1、只能选文件,不能选文件夹,好在可以拖进去,只好在文件夹上按F3,搜出所有要打包的,拖进去,合并压缩成一个。

2、压缩要求严格,如{a:b,},后面的逗号一般是没事的,能去掉当然是最好。但这软件提示IE8会不支持之类,就报错不压缩了。这几个js是公共文件,本不想改,现在只好把相应的多余逗号去掉,提交SVN。

 

var a = {x:"y",};
console.log(a)
显示:Object {x: "y"}

 

3、有个选项是为每个js生成.min,本来合并的时候不会用到这功能,结果除了合并的js之外,每次都会把列表最下方那个js也生成一个.min.js。。。好在有选项可以关掉,不然SVN里多出一个来每次都要删也很烦

能压缩js也能压缩css,还是挺好用的,目前也没找到其它什么工具。真是奇怪,这么常用的,大家可能都是用集成的工具或命令,有时还是单独的程序好些(一般都是项目内为了提高效率用的,我这是要压缩合并,给其它项目用。)。

 

posted @ 2016-01-25 20:26  文刂亻右景彡  阅读(176)  评论(0编辑  收藏  举报