C# LINQ创建db manager类的最佳实践是什么?
什么是最佳性能和一致性? 变体一(从DataContext继承):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
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;
}
}