Я реализует Repository Pattern использования ServiceStack.ORMLite так:Операции в Repository Pattern использование ServiceStack.ORMLite
public class MyRepository : IMyRepository
{
private IDbConnectionFactory DbConnectionFactory = null;
public MyRepository(IDbConnectionFactory dbConnectionFactory)
{
DbConnectionFactory = dbConnectionFactory;
}
public void MyMethod()
{
using (var connection = DbConnectionFactory.OpenDbConnection())
using (var cmd = connection.CreateCommand())
{
//Do something here
}
}
}
Но я не знаю, как обращаться с DbTransaction, когда мне нужно, чтобы деформировать некоторые операции БД в DbTransaction. Похоже, TransactionScope
- это решение, но я не знаю, слишком ли тяжело для этого.
Это моя вина, задавая плохой вопрос ... Я попытаюсь redfine моего вопроса ... –
ли это хорошо, чтобы открыть интерфейс IDbConnection только один раз для каждого запроса и утилизировать после использования? Я думал, что я должен откройте соединение в начале каждого метода и закройте его, когда метод закончен. –
Все в порядке, если вы используете пул соединений (т. Е. Поведение по умолчанию для SqlServer), соединение все равно не закрыто, оно просто выпущено обратно в пул. Но да, в любом случае, хорошо использовать область запроса, поскольку она является однопоточным для каждого запроса, поэтому экземпляр соединения можно безопасно обменивать с другими зависимостями в той же области запроса. – mythz