What is the best pattern to use LINQ to C#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public class CommonService { private readonly DataContext _context; public CommonRepository() { _context = new DataContext(); } public CommonRepository(DataContext context) { _context = context; } public List GetAll() { var query = from m in _context.MyModel select m; return m.ToList(); } } |
或
1 2 3 4 5 6 7 8 9 10 11 12 | public class CommonService { public List GetAll() { using (DataContext context = new DataContext()) { var query = from m in context.MyModel select m; return m.ToList(); } } } |
或者你有更多的图案,请建议我。
这里有一个主要的区别:第一个代码示例在服务的生命周期内保持一个单独的数据上下文,而第二个示例为每个操作旋转一个新的数据上下文。第二个例子通常是正确的,因为有了变更跟踪,DataContext会变得很大,如果有其他东西调用
请参见Linq to SQL DataContext的多个/单个实例
您可以使用这两种模式,但一定要确保上下文的使用寿命很短。第一个选项允许您在
如果你选择第一个选项(我倾向于这样做),你可以考虑让