Для всего приложения используйте статический класс tConfig.ConnectionString
для загрузки необходимой строки подключения. К сожалению, мне нужно иметь возможность изменять соединение в зависимости от того, относится ли ссылка к TransactionScope
. В настоящее время у меня есть эта часть кода, но статический класс вызывает мне ошибку StackOverflow. Помогите реализовать функциональность в этом классе static (или какое-то лучшее решение).Изменить строку соединения на основе TransactionScope в проекте WCF (baseHttpBinding)
public static class tConfig
{
public static string ConnectionString
{
get {
if (System.Transactions.Transaction.Current != null)
return "ConnectionString with scope";
else
return "ConnectionString without scope";
}
}
}
[ServiceContract]
public interface IMyService
{
[OperationContract]
string GetData;
[OperationContract]
string GetDataWithScope;
}
public class MyService : IMyService
{
public string GetData
{
using (var context = new MyEntities(tConfig.ConnectionString)
{
return context.table1.where(x=>x.ID == 1).Select(x=> x.F_NAME).FirstOrDefault().ToString();
}
}
public string GetDataWithScope
{
using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.Required, TimeSpan.FromSeconds(600)))
{
using (var context = new MyEntities(tConfig.ConnectionString)
{
return context.table1.where(x=>x.ID == 1).Select(x=> x.F_NAME).FirstOrDefault().ToString();
}
}
}
}
Почему вы используете transactionScope для выбора операции? – Vasiliy
Это только пример. Я использую его для AddObject и обновляю –