C# LINQ创建db manager类的最佳实践是什么?

C# LINQ创建db manager类的最佳实践是什么?,c#,linq,datacontext,C#,Linq,Datacontext,什么是最佳性能和一致性? 变体一(从DataContext继承): public class MyDbManager : DataContext { public MyDbManager(string conn):base(conn) { var tblMyTable1 = GetTable<MyTable1>(); var tblMyTable2 = GetTable<MyTable2>(); } publ

什么是最佳性能和一致性?

变体一(从DataContext继承):

public class MyDbManager : DataContext
{
    public MyDbManager(string conn):base(conn)
    {
        var tblMyTable1 = GetTable<MyTable1>();
        var tblMyTable2 = GetTable<MyTable2>();
    }
    public void GetEntityById(int id)
    {
        var myEntity = (from p in tblMyTable1 where p.Id == id  select p).FirstOrDefault();
    }
}
公共类MyDbManager:DataContext { 公共MyDbManager(字符串连接):基本(连接) { var tblMyTable1=GetTable(); var tblMyTable2=GetTable(); } public void GetEntityById(int id) { var myEntity=(来自tblMyTable1中的p,其中p.Id==Id选择p); } } 变体2(每次创建新连接)

公共类MyDbManager
{
公共字符串ConnectionString=“myConnStr”;
公共列表GetAllPrograms()
{
var programs=新列表();
使用(var db=newdatacontext(ConnectionString))
{
var tblPrograms=db.GetTable();
程序=(从tblPrograms中的p选择p).FirstOrDefault(.ToList());
}
返回程序;
}
}

或者您有第三种变体?多谢各位

为了保持一致性,我会采用模式,而对于性能,我会采用模式

您似乎正在使用第二种方法,但是,我会在我的数据库中为每个实体创建一个存储库,例如Table1Repository/Table2Repository,并将每个实体的所有责任委托给相应的回购方……这只是我的意见

如果您看一下第一种方法,您实际上并没有正确地在本地缓存表,但我理解您的意思。因此,如果您仔细考虑一下,尽管系统一旦启动和运行可能会更快,但缓存表中的每条记录真的有效(或必要)吗?在大多数情况下,您会查询诸如
Customer->Orders
之类的内容,因此在需要时查询数据库肯定更有意义?因为您的行程不仅会缩短,而且在服务器上的强度也会降低

DataContext是轻量级的,设计时考虑到了这种方法

    public class MyDbManager
    {
        public string ConnectionString = "myConnStr";

        public List<Program> GetAllPrograms ()
        {
            var programs = new List<Program>();
            using (var db = new DataContext(ConnectionString))
            {
                var tblPrograms = db.GetTable<Program>();
                programs = (from p in tblPrograms select p).FirstOrDefault( .ToList());
            }
            return programs;
        }
}