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