在更新到最新的Asp.Net Identity(從1.0到2.0)後,我從DB獲得用戶的CRUD上的異常:Asp.Net Identity 2.0:實體類型用戶不是當前上下文模型的一部分
的實體類型的用戶不是當前上下文
// for example here:
var manager = Container.Resolve<UserManager<User>>();
IdentityResult result = manager.Create(user, "Test passwd");
public class User : IdentityUser
{
// Some properties
}
public class AppDbContext : IdentityDbContext<User>
{
static AppDbContext()
{
// Without this line, EF6 will break.
Type type = typeof (SqlProviderServices);
}
public AppDbContext()
: this("DBName")
{
}
public AppDbContext(string connectionString)
: base(connectionString)
{
}
...
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
modelBuilder.Entity<User>()
.HasMany(c => c.SkippedTopics)
.WithMany(i => i.Users)
.Map(t =>
t.MapLeftKey("User_Id")
.MapRightKey("Topic_Id")
.ToTable("UserSkippedTopics"));
...
}
代碼工作正常更新前的模型的一部分。有任何想法嗎?
UPDATE
的問題是在對的UserManager類型統一的配置。
修復:我創建的空AppUserStore:UserStore並將其註冊爲IUserStore:
public class AppUserStore : UserStore<User>
{
public AppUserStore(AppDbContext context) : base(context)
{
}
}
...
public static void RegisterTypes(IUnityContainer container)
{
...
_container.RegisterType<AppDbContext, AppDbContext>(new InjectionConstructor());
_container.RegisterType<IUserStore<User>, AppUserStore>();
}
Thanx,你是對的 - 這是Unity的配置問題。修正在UPDATE部分中描述。 –
@dima謝謝哥們。你的回答幫了我很多。 –