Я хочу нанести на карту DbConnection
до незакрытого SqlConnection
, используя Ninject
. Это то, что я сделал:Ninject: Предоставьте открытое SqlConnection при запросе на DbConnection
string constr = @"Server=.\SQLEXPRESS; Trusted_Connection=True; Database=TestDB";
Bind<DbConnection>().To<SqlConnection>()
.Using<OnePerRequestBehavior>()
.WithConstructorArgument("connectionString", constr);
Однако при попытке использовать дб я получаю ошибку о том, что
Эта операция требует подключения к базе данных «мастер». Не удалось создать соединение с базой данных «master», поскольку исходное соединение с базой данных было открыто и учетные данные были удалены из строки подключения. Обеспечьте нераскрытое соединение.
(Та же операция работает, если я просто обеспечить связь с new SqlConnection(constr)
...)
Оказывается QueryString
свойства SqlConnection
я давался Ninject пусто. Что я делаю не так?
UPDATE
Я теперь протестирован с kernel.Get<DbConnection>()
непосредственно после связывания, и с вышеуказанным кодом он все еще дает мне пустую строку подключения. Следующие работы, хотя это более многословным, чем я хочу это:
Bind<DbConnection>().ToMethod<SqlConnection>(ctx => GetConnection());
private SqlConnection GetConnection()
{ return new SqlConnection(constr); }
UPDATE 2
Это весь мой модуль:
public class MsSqlModule : StandardModule
{
private string constr = @"Server=AASLOEG\SQLEXPRESS; Trusted_Connection=True; Database=Booking_Test";// System.Configuration.ConfigurationManager.ConnectionStrings["mssql"].ConnectionString;
public override void Load()
{
Bind<DbConnection>().To<SqlConnection>().WithConstructorArgument("connectionString", constr);
var test = Kernel.Get<DbConnection>();
test.Dispose();
}
}
С точки останова на var test = Kernel.Get<DbConnection>();
и перешагнув, я вижу, что test
заселен SqlConnection
, но ConnectionString
pro perty пуст.
Вы не имеете в виду '** Query ** String' вы? –
Это единственный звонок, который вы получили? не вижу, как 'Get()' может не передать аргумент arg [и выбрать нестандартную перегрузку ctor], если это так. –
Вы уверены, что 'constr' инициализируется в точке« Bind »? –