Keine passenden Bindungen vorhanden sind, und der Typ ist nicht selbst gebunden in Ninject

Ich bin mit Ninjec, Ninject.Web.MVC und Ninject.Web.Gemeinsame

Wenn ich mein mvc-Anwendung bekomme ich diese verbindliche Fehler:

Was mache ich falsch in meiner Bindung?

Fehler aktivieren DbConnection

Keine passenden Bindungen vorhanden sind, und der Typ ist nicht selbst gebunden werden.

Aktivierungs-Pfad:

4) Injektion der Abhängigkeit DbConnection in parameter
existingConnection-Konstruktor des Typs DbContext

3) Injektion der Abhängigkeit DbContext in parameter dbContext von
Konstruktor des Typs GenericRepository{User}

2) Injektion der Abhängigkeit IGenericRepository{User} in parameter
repo-Konstruktor des Typs HomeController

1) Anfrage für HomeController

Vorschläge:

1) stellen Sie Sicher, dass Sie definiert haben, eine Bindung für DbConnection.

2) Wenn die Bindung wurde in einem Modul definiert, sicherstellen, dass das Modul
wurde in den kernel geladen.

3) Sicherzustellen, dass Sie haben nicht zufällig entstanden mehr als ein kernel.

4) Wenn Sie mit Konstruktor Argumenten, sicherzustellen, dass die parameter
name entspricht der Konstruktoren parameter name.

5) Wenn Sie die automatische laden der module, gewährleisten den Pfad suchen
und Filter korrekt ist.

public interface IGenericRepository<T> where T : class
{
}

public class GenericRepository<T> : IGenericRepository<T> where T : class
{
        public GenericRepository(TLPContext dbContext)
        {
            DbContext = dbContext;
        }

        protected TLPContext DbContext { get; private set; }
}

[assembly: WebActivator.PreApplicationStartMethod(typeof(TLP.App_Start.NinjectWebCommon), "Start")]
[assembly: WebActivator.ApplicationShutdownMethodAttribute(typeof(TLP.App_Start.NinjectWebCommon), "Stop")]

namespace TLP.App_Start
{
    using Microsoft.Web.Infrastructure.DynamicModuleHelper;
    using Ninject;
    using Ninject.Web.Common;
    using System;
    using System.Web;
    using TLP.DataAccess;
    using TLP.DataAccess.Contract;
    using TLP.DataAccess.Implementation;

    public static class NinjectWebCommon
    {
        private static readonly Bootstrapper bootstrapper = new Bootstrapper();
        public static void Start()
        {
            DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
            DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
            bootstrapper.Initialize(CreateKernel);
        }

        public static void Stop()
        {
            bootstrapper.ShutDown();
        }

        private static IKernel CreateKernel()
        {
            var kernel = new StandardKernel();
            kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
            kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
            kernel.Bind<TLPContext>();
            kernel.Bind(typeof(IGenericRepository<>)).To(typeof(GenericRepository<>));
            return kernel;
        }
    }
}


[DbModelBuilderVersion(DbModelBuilderVersion.V5_0)]
    public class TLPContext : DbContext
    {
        public TLPContext()
            : base("DefaultConnection")
        {
            //We do not want implicit uncontrollable lazy loading, instead we use the explicit Load method
            this.Configuration.LazyLoadingEnabled = false;
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

            //Primary key
            modelBuilder.Entity<User>().HasKey(p => p.UserId);
            modelBuilder.Entity<User>().Property(p => p.FirstName).HasMaxLength(30).IsRequired();
            modelBuilder.Entity<User>().Property(p => p.RegisteredAt).IsRequired();
        }

        public DbSet<User> Users { get; set; }
    }
InformationsquelleAutor Elisabeth | 2013-02-12
Schreibe einen Kommentar