数据库字段,枚举
发布网友
发布时间:2022-04-10 13:07
我来回答
共1个回答
热心网友
时间:2022-04-10 14:37
这个要放点代码。但是这种方式没有必要,其次就放50分,实在少点,回头你看我的回复
是否值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();
}
}
}
---------------------
第四:如果你们领导都同意用枚举来映射表,你也没必要修改,顺水推舟吧!
出错你在摆平,也让你出名一把!你自己先提前想好方案!追问谢谢您的指点。
业务方面太多,针对每个操作写sql语句虽然较安全,但实在太累。
所以就考虑写公共方法,传递where 条件,如果用这个枚举,就能避免写错列名,
但就不知道是否安全。
追答以上说的很清楚了!可能思路发散让人很难理解。
----
你认为的出错,只是避免拼写错误。但是实际上还是不能治疗根本的问题。
你把代码放出来看看。当前都是使用强类型查询来规避你说的拼写和效率问题。
参见linq