是否值50分?
----------------------
第一:如果代码类似如下
columns[int(TC_User.id)]
columns[int(TC_User.Name)]
columns[int(TC_User.Sex)]
columns[int(TC_User.Address)]
如果从持久实体直接获取,虽然有点效率,但是你可以试验一下如下查询:
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='T_CRD'
以上T_CRD 是表名,你看到有一列是ORDINAL_POSITION:
这个是按照数据库设计表的自然序排列,之后你就看到,只要在设计视图中换换位置就改变了这个值。
本身在DBA优化里有一项就是数据类型同项归类提速,结果代码过于拘泥,让DBA根本不能实施这项工作。这是一方面:
--------------------------------------------------
第二:其次就是使用反射来获悉枚举列名。你可以自己试验一下:还不如最原始的if else快,性能差个几百倍。
--------------------------------------------------
第三:即使元数据析构table,也是类似如下方式,如下是linq上下文生成列的方式,使用的是特性描述,别看原始,这确是大智慧。
[Column(Storage="_RpNo", DbType="NVarChar(50) NOT NULL", CanBeNull=false)]
public string RpNo
{
get
{
return this._RpNo
}
set
{
if ((this._RpNo != value))
{
this.OnRpNoChanging(value)
this.SendPropertyChanging()
this._RpNo = value
this.SendPropertyChanged("RpNo")
this.OnRpNoChanged()
}
}
}
---------------------
第四:如果你们领导都同意用枚举来映射表,你也没必要修改,顺水推舟吧!
出错你在摆平,也让你出名一把!你自己先提前想好方案!
利用反射(Reflection),通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)