关于使用Linq to sql作为数据交互时的架构问题
2010-09-03 15:56 gio.zhou 阅读(359) 评论(0) 收藏 举报刚刚和同事讨论时发现有不小的异议。具体效率哪个高?请各位路过的高手指教下。
我的方案:
Data层:
父类:
public abstract class LinqDataBase 
    {
        public static InfoCollectDBDataContext InfoCollectDBDataContextObj = new InfoCollectDBDataContext("Initial Catalog=InfoCollectDB; data source=VSH-ZHOUJIE02;user id=sa;password=123456;");
    }
子类:
 public class PermissionDA : LinqDataBase
    {
        public static int GetPermissionID(string uid)
        {
            var ic_User = InfoCollectDBDataContextObj.Ic_Users.SingleOrDefault(a => a.uid == uid);
            InfoCollectDBDataContextObj.Refresh(RefreshMode.OverwriteCurrentValues, ic_User);
            return ic_User.permission_id;
        }
    }
Bussiness层调用
public class ActivityBussiness { public static int GetInfoDataList(string uid) { return PermissionDA.GetPermissionID(uid); }
}
我个人觉得,缺点是
- 是每个方法中我都需要写Refresh
- 每次Refresh时都需要将内存中的数据对象覆盖InfoCollectDBDataContextObj对应的数据。
同事的方案:
  数据层:
public class PermissionDA : LinqDataBase
    {
        public int GetPermissionID(string uid)
        {
InfoCollectDBDataContext InfoCollectDBDataContextObj = new InfoCollectDBDataContext();
            var ic_User = InfoCollectDBDataContextObj.Ic_Users.SingleOrDefault(a => a.uid == uid);
            return ic_User.permission_id;
        }
    }
业务层:
public class ActivityBussiness    {
        public int GetInfoDataList(string uid)
        {
PermissionDA o = new PermissionDA();
            return o.GetPermissionID(uid);
        }
}
2个区别就是一个是使用静态方法,导致DataContext也是静态对象,所以每次要refresh。但是我实在不想实例化这种只是方法,而不包含业务数据的类。
同事的方案。不需要使用refresh。但是需要每次DISPOSE。
具体的区别。还有很多很多。熟优熟劣请大家帮我分析下。
 
                     
                    
                 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号