Я работаю над большим проектом, который заполнен на 80% (некоторые функции должны быть реализованы, хотя). Но недавно мы обнаружили, что проект не разрешает одновременные запросы (я имею в виду, что несколько пользователей запрашивают то же хранилище). Когда-то мы получаем null referece & иногда «Выполненные не могут открыть доступное соединение, состояние соединения закрыто» и т. Д. Наш исходный код сильно ограничен за пределами мира. Вот какой-то код. Сообщите мне, есть ли какая-либо архитектурная проблема, поскольку архитектурные ребята покинули компанию. Он использует ninject 3.0. Я уже использовал InRequestScope() для хранилищ все менеджера, но не повезлоDbContext с Ninject ADO.NET
Обновление: Я не использую любой ORM здесь, я пытаюсь подключить SqlServer через адаптер данных в моем классе DbContext
public class DbContext
{
//execute query , nonquery etc using adapter & datatable
//Example
var dt=new DataTable();
_adapter=new _dbfactory.CreateAdapter();
_adapter.Fill(dt);
return dt;
}
//MyController
public class MyController
{
private readonly IMyManager_iMyManager;
public MyController(IMyManager iMyManager){_iMyManager=iMyManager}
public ActionResult Save()
{
_iMyManager.Save()
}
}
// My Manager
public class MyManager:IMyManager
{
private readonly IMyRepository _iMyRepository;
DbContext _dbContext=new
DbContext("someParameter","connectionstring");
public MyManager
(
IMyRepository iMyRepository, DbContext dbContext
)
{
_iMyRepository=iMyRepository;
_dbContext=dbContext;
}
Public DataTable GetDataTable()
{
try
{
_dbContext.Open();
_iMyRepository.GetDataTable()
}
catch(Exception ex){}
finally{_dbContext.Close()}
}
}
// здесь хранилище
Public class MyRepository:IMyRepository
{
public _dbContext;
public MyRepository(DbContext dbContext)
{
_dbContext=dbContext;
}
public DataTable GetDataTable()
{ return _dbContext.ExecuteQuery()}
}
Наконец Вот наша Ninject связывание
public class NinjectDependencyResolver()
{
var context=new DbContext("someparameter","connectionStrin");
kernel.Bind<IMyManager>().To<MyManager>().WithConstructorArgument("_dbContext",context);
kernel.Bind<IMyRepository >().To<MyRepository >().WithConstructorArgument("_dbContext",context);
}
В моем коде может быть какая-то опечатка, так как я написал все в таком редакторе
Можете ли вы предоставить более подробную информацию? Используете ли вы ORM, например EF6, для доступа к базе данных? какая версия? Или вы пытаетесь напрямую подключиться к базе данных с помощью собственного драйвера и какой? Sql Server, Oracle и т. Д.? – Vinod
В какой строке указывается нулевая ссылка? Ваш 'Controller' вызывает только метод' Save'. Это поможет, если вы предоставите источник этого метода. –