ninject 3 визуализирует экземпляры контекста объекта

Entity Framework 4, Ninject 3, MVC3 В настоящее время в моем веб-приложении я использую довольно рудиментарный подход к созданию экземпляра контекста объекта для каждого запроса. Итак, я экспериментирую с Ninject и некоторым старым образцом кода, но я не уверен, как поступить со следующим. Фактически я хочу иметь возможность в контроллере делать эквивалент: DB_Entities.Current.Albums... Должен ли я каждый раз создавать экземпляр StandardKernel? Образец, на который я смотрел, использовал следующее: MvcApplication.Container.Get(); но в Ninject 3 с подключением App_Start у меня нет доступа к Container..

Моя попытка повторить приведенную выше строку терпит неудачу во время выполнения.

using MusicStoreEntities;
using Ninject;
using TestMVC3WithIOC.App_Start;
using System.Data.Objects;

namespace TestMVC3WithIOC.Models
{
    public partial class MusicStoreEntities
    {
        public static MusicStoreEntities Current
        {
        get
        {
            using (IKernel kernel = new StandardKernel())
            {
            return (MusicStoreEntities)kernel.Get<ObjectContext>();
            }
        }
        }
    }
}

Также обратите внимание, что в App_Start\NinjectWebCommon.cs у меня есть следующая модификация:

    private static void RegisterServices(IKernel kernel)
    {
        kernel.Bind<ILogger>().To<NLogger>();
        kernel.Bind<ObjectContext>().To<MusicStoreEntities>().InRequestScope();

    } 

person user1740742    schedule 13.11.2012    source источник


Ответы (1)


person    schedule
comment
хорошо, у меня нет проблем с передачей в IEntities, но предыдущий метод, основанный на более старом Ninject, был без параметров, а для этого требуется один, где/как я должен создать экземпляр этой фабрики? Является ли Application_Start лучшим местом?? - person user1740742; 14.11.2012
comment
@user1740742 user1740742 вам не нужно создавать экземпляр класса, если вы добавили все привязки в ядро. Ninject должен обрабатывать экземпляры через kernel.Get<T>(). - person McGarnagle; 14.11.2012