2014-04-01 62 views
6

我剛剛升級1.0的ASP.NET標識實體框架包2.0和Ninject綁定一個現在分成:Ninject和ASP.NET 2.0身份

kernel.Bind<IUserStore<User>>().To<UserStore<User>>(); 
kernel.Bind<UserManager<User>>().ToSelf(); 
kernel.Bind<IRoleStore<IdentityRole>>().To<RoleStore<IdentityRole>>(); 
kernel.Bind<RoleManager<IdentityRole>>().ToSelf(); 

第二個最後一個是給這個錯誤上編譯:

類型「Microsoft.AspNet.Identity.EntityFramework.RoleStore」不能被用作在通用類型或方法「Ninject.Syntax.IBindingToSyntax.To()」類型參數「TImplementation」。

沒有從'Microsoft.AspNet.Identity.EntityFramework.RoleStore'到'Microsoft.AspNet.Identity.IRoleStore'的隱式引用轉換。

這些都是一些類所涉及的聲明:

public interface IRoleStore<TRole> : IRoleStore<TRole, string>, IDisposable where TRole : IRole<string> 

public class RoleStore<TRole, TKey, TUserRole> : IQueryableRoleStore<TRole, TKey>, IRoleStore<TRole, TKey>, IDisposable where TRole : IdentityRole<TKey, TUserRole>, new() where TUserRole : IdentityUserRole<TKey>, new() 

我不知道是什麼原因造成它打破?

回答

8

我們增加了一個新的基類Rolestore的增加和用戶角色的實體類型爲泛型類型,所以也許嘗試

kernel.Bind<IRoleStore<IdentityRole, string>>().To<RoleStore<IdentityRole, string, IdentityUserRole>(); 
+0

是固定的。謝謝。 – user380689

+0

工作完美!謝謝。 – carzogliore

+1

只是正面向上,錯過了關閉> ..... IdentityUserRole >>(); – J3RM