关于使用Linq to sql作为数据交互时的架构问题
时间:2010-09-03 来源:gio.zhou
刚刚和同事讨论时发现有不小的异议。具体效率哪个高?请各位路过的高手指教下。
我的方案:
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。
具体的区别。还有很多很多。熟优熟劣请大家帮我分析下。
相关阅读 更多 +










