回 帖 发 新 帖 刷新版面

主题:请教C#

[b]各位高手一定要看并请回帖:[/b]
表tDepartment有字段DepartmentID,DepartmentName,
DepartmentID还存在数据库其他N个表中
有许多地方要通过DepartmentID得到DepartmentName,每次需要时都从数据库取表tDepartment的记录将浪费系统资源.
[color=FF00FF][b]请各位高手介绍更好的方法?[/b][/color]

C#没有全局量,若有些变量需要在工程里的多个地方使用,如何处理?
我以前用VB6,ADODB有将记录集保存为本地文件的功能,这样一些非业务表都是在程序开始的时候一次性取出来保存为文件,需要时将所需的文件打开为ADODB.RecordSet.
另外我用VB写了一个网格控件 代码如下:

'ChangeFlag列定义

Public Enum enumGridRowChange

    UnChanged = 0

    Add = 1

    Modify = 2

    Delete = 3

End Enum

'某行数据是否改变

Public Property Get RowDataChanged(ByVal Row As Integer) As enumGridRowChange

    Dim i As Byte

    RowDataChanged = 0 '

    RowDataChanged = vg.TextMatrix(Row, vg.ColIndex(COLKEYROWCHANG))

End Property




'某行数据是否改变

Public Property Let RowDataChanged(ByVal Row As Integer, ByVal New_Value As enumGridRowChange)

    vg.TextMatrix(Row, vg.ColIndex(COLKEYROWCHANG)) = New_Value

End Property


------------------------------------
VB调用
//第一行数据是否改变?
grid1.RowDataChanged (1)=Add(=后显示下列值供选择)
    UnChanged 
    Add 
    Modify 
    Delete 

C#调用:
//第一行数据是否改变?

Grid1.set_RowDataChanged (1,Grid1.enumGridRowChange)----(行号,值)
出现的是Grid1.enumGridRowChange而不是供你选择的值,
如何处理出现供你选择的值?
逗号后如何出现  
  UnChanged 
    Add 
    Modify 
    Delete
供你选择

回复列表 (共2个回复)

沙发

C#中没有全局变量????不太可能吧???你指的是不是Web程序???如果实在想用全局变量,那就用Session吧,不太安全。

把这表做成一个实体类,封一个静态方法用于查数据库
public class Department

{
   public Department(int id)
   {
   }
   public static string GetDepNameByID(int id)
   {
      return 查得的DepartmentName;
   }
}

在外面就可以调这个静态方法了,不用每次再写查询数据库的操作。

departmentName=Department.GetDepNameByID(id);


你不要担心这个类每次都要查数据库占用资源的问题。微软的ADO.Net不是盖的,它自己会处理资源的占用与释放的,比你另外写的代码效率高多了。只要你调用方便就行了。你以为是C++呀,什么都要自己做。那MS还费那么大劲出.NET干嘛?


另外不要自以为聪明,想把数据全读到内存中,程序结束时再写回数据库,因为在你回写数据库之前,可能有些数据已经被其他用户修改了(网络程序),这样就会出乱子。没好处,还是当用到的时候再读吧,有种说法叫Lazy-Loading好象说的就是这个意思吧,不太确定了。

板凳

谢了!
请问最后一个问题如何处理

我来回复

您尚未登录,请登录后再回复。点此登录或注册