关于使用Linq to sql作为数据交互时的架构问题
2010-09-03 15:56 gio.zhou 阅读(356) 评论(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。
具体的区别。还有很多很多。熟优熟劣请大家帮我分析下。