最佳性能和一致性是什么?
变体1(继承自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();
}
}
变体2(每次新建连接时创建)
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;
}
}
或许您有第三种变体?非常感谢你!
答案 0 :(得分:2)
为了保持一致性,我会采用Repository Pattern,为了表现,我会采用Unit of Work模式。
使用第二种方法,您似乎有点沿着该路线走下去,但是,我会在我的数据库中为每个实体创建一个存储库,例如Table1Repository / Table2Repository,并将每个实体的所有责任委托给相应的repo ....只是我的意见。
如果你看一下你的第一种方法,你实际上并没有正确地在本地缓存表,但我明白你的目标是什么。所以,如果你考虑一下,虽然一旦你的系统启动它可能会更快。运行是否真的有效(或必要)从表中缓存每个记录?在大多数情况下,您会查询Customer->Orders
之类的内容,因此,如果&amp;和查询数据库肯定会更有意义。什么时候需要?因为您的行程不仅会缩短,而且服务器上的密集程度也会降低。
DataContext是轻量级的,并且在设计时考虑了这种方法。