我想知道MvvmCross容器是否可以处理SQLite连接的处置,或者这应该在存储库中手动完成。什么是配置与MvvmCross和SQLite插件连接的最佳方式
我见过的代码示例一样,不手动配置或关闭SQLite的连接如下:
public class ExampleRepository
{
private readonly ISQLiteConnection _connection;
public ExampleRepository(ISQLiteConnectionFactory factory)
{
_connection = factory.Create("Example.db");
_connection.CreateTable<Example>();
}
public IEnumerable<Example> All()
{
return _connection.Table<Example>().ToList();
}
}
这会是一个更好的选择?
public class ExampleRepository
{
private readonly ISQLiteConnectionFactory _factory;
public ExampleRepository(ISQLiteConnectionFactory factory)
{
_factory = factory;
}
public IEnumerable<Example> All()
{
using (var connection = _factory.Create("Example.db"))
{
connection.CreateTable<Example>();
return connection.Table<Example>().ToList();
}
}
}
它会更好使用using块是在存储库中每次使用时处置该连接的?
或者是更持续创建和处置连接的开销。因此,在第一个例子中将其打开的原因是什么?
您应该始终在使用后处理连接 - 任何用法。同样适用于实现IDisposable的对象 –